ios CGRec用法
生活随笔
收集整理的這篇文章主要介紹了
ios CGRec用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ?/*
???? rect(x,y,width,height);
???? width, height正負代表了從原點的繪制方向,矩形的長寬都是取得絕對值
???? */
?? ?
?? ?
?? ?// Do any additional setup after loading the view, typically from a nib.
#pragma mark -------------------------------------------生成CGRect---------------------------------------
??? CGRect originalRect = CGRectMake(80.44, 30.66, 100.77, 95.88);
??? NSLog(@"originalRect = %@",NSStringFromCGRect(originalRect));
??? // CGRectInfinite 用法
??? /*
???? 生成無窮大矩形
???? */
??? NSLog(@"infiniteRect = %@",NSStringFromCGRect(CGRectInfinite));
?? ?
??? // CGRectNull 用法
??? NSLog(@"nullRect = %@",NSStringFromCGRect(CGRectNull));
?? ?
??? //CGRectZero 用法
??? /*
???? CGRectMake(0, 0, 0, 0)
???? */
??? NSLog(@"zeroRect = %@",NSStringFromCGRect(CGRectZero));
?? ?
??? // CGRectInset 用法
??? CGRect insetRect = CGRectInset(originalRect, 1, 2);
??? /*
???? CGRectInset(originalRect, dx, dy);
??? insetRect.origin.x = originalRect.origin.x + dx ;
??? insetRect.origin.y = originalRect.origin.y + dy;
??? insetRect.size.width = originalRect.size.width - 2 * dx;
??? insetRect.size.height = originalRect.size.height - 2 * dy;
???? */
??? NSLog(@"insetRect = %@",NSStringFromCGRect(insetRect));
?? ?
??? //CGRectOffset 用法
??? CGRect offsetRect = CGRectOffset(originalRect, -1, -2);
??? /*
???? CGRectOffset(originalRect, dx, dy);
???? insetRect.origin.x = originalRect.origin.x + dx ;
???? insetRect.origin.y = originalRect.origin.y + dy;
???? insetRect.size.width = originalRect.size.width;
???? insetRect.size.height = originalRect.size.height;
???? */
??? NSLog(@"offsetRect = %@",NSStringFromCGRect(offsetRect));
?? ?
??? //CGRectIntegral 用法
??? /*
???? 將origin值向下調整到最近整數,size向上調整到最近整數,使生成的CGRect可以完全包含原來的CGRect.
???? */
??? CGRect integralRect = CGRectIntegral(originalRect);
??? NSLog(@"integralRect = %@",NSStringFromCGRect(integralRect));
?? ?
??? //CGRectStandardize 用法
??? /*
???? CGRectStandardize(testRect)
???? standardizeRect.size.width = fabsf(testRect.size.width)//testRect.size.width 的絕對值
???? standardizeRect.size.height = fabsf(testRect.size.height)//testRect.size.height 的絕對值
???? */
??? CGRect testRect = CGRectMake(-5.5, -6.6, -7.7, -8.8);
??? CGRect standardizeRect = CGRectStandardize(testRect);
??? NSLog(@"standardizeRect = %@",NSStringFromCGRect(standardizeRect));
?? ?
??? //CGRectUnion 用法
??? /*
???? CGRectUnion(rect1,rect2) 返回值是能夠包含兩個矩形的最小矩形
???? unionResultRect.origin.x = min(rect1.origin.x, rect2.origin.x);
???? unionResultRect.origin.y = min(rect1.origin.y, rect2.origin.y);
???? unionResultRect.size.width = min(rect1.origin.y, rect2.origin.y);
???? unionResultRect.size.height = min(rect1.origin.y, rect2.origin.y);
???? */
??? CGRect unionRect1 = CGRectMake(100, 50, 60, 70);
??? CGRect unionRect2 = CGRectMake(180, 20, 30, 40);
??? CGRect unionRect3 = CGRectMake(120, 80, 80, 90);
??? CGRect unionResultRect1 = CGRectUnion(unionRect1, unionRect2);
??? CGRect unionResultRect2 = CGRectUnion(unionRect1, unionRect3);
??? NSLog(@"unionResultRect1 = %@, unionResultRect2 = %@",NSStringFromCGRect(unionResultRect1),NSStringFromCGRect(unionResultRect2));
?? ?
??? //CGRectIntersection 用法
??? /*
???? CGRectIntersection(rect1, rect2)
???? 求兩個矩形的交集,返回結果是兩個矩形相交的區域,如果沒有交集的話,返回值是NSNullRect
???? */
??? CGRect interRect1 = CGRectMake(100, 50, 60, 70);
??? CGRect interRect2 = CGRectMake(180, 20, 30, 40);
??? CGRect interRect3 = CGRectMake(120, 80, 80, 90);
??? CGRect intersectionRect1 = CGRectIntersection(interRect1, interRect2);
??? CGRect intersectionRect2 = CGRectIntersection(interRect1, interRect3);
??? NSLog(@"intersectionRect1 = %@, intersectionRect2 = %@",NSStringFromCGRect(intersectionRect1),NSStringFromCGRect(intersectionRect2));
?? ?
#pragma mark ------------------------------------------獲取x,y,width,height---------------------------------------------------
??? //CGRectGetMinX(originalRect),CGRectGetMidX(originalRect),CGRectGetMaxX(originalRect),CGRectGetMinY(originalRect),CGRectGetMidY(originalRect),CGRectGetMaxY(originalRect) , CGRectGetWidth(originalRect), CGRectGetHeight(originalRect)用法
??? /*
???? minX = originalRect.origin.x;
???? midX = (minX + maxX)/2;
???? maxX = (originalRect.origin.x + originalRect.size.width);
??? ?
???? minY = originalRect.origin.y;
???? midY = (minY + maxY)/2;
???? maxY = (originalRect.origin.y + originalRect.size.height);
??? ?
???? width = originalRect.size.width;
???? height = originalRect.size.height;
???? */
??? NSLog(@"minX = %f, midX = %f, maxX = %f, minY = %f, midY = %f, maxY = %f, width = %f, height = %f",CGRectGetMinX(originalRect),CGRectGetMidX(originalRect),CGRectGetMaxX(originalRect),CGRectGetMinY(originalRect),CGRectGetMidY(originalRect),CGRectGetMaxY(originalRect),CGRectGetWidth(originalRect), CGRectGetHeight(originalRect));
?? ?
??? //CGRectGetWidth(originalRect), CGRectGetHeight(originalRect),用法
??? /*
???? width = originalRect.size.width;
???? height = originalRect.size.height;
???? */
??? NSLog(@"width = %f, height = %f",CGRectGetWidth(originalRect), CGRectGetHeight(originalRect));
#pragma mark -----------------------------------------NSString 與 CGRect 轉換-----------------------------------------------
??? //NSString 與 CGRect 轉換
??? NSString *originalRectStr = NSStringFromCGRect(originalRect);
??? CGRect rectFromStr = CGRectFromString(originalRectStr);
??? NSLog(@"originalRectStr = %@, rect = %@",originalRectStr,NSStringFromCGRect(rectFromStr));
?? ?
#pragma mark -----------------------------------------CGRect 與 NSDictionary 轉換---------------------------------------------
??? //.CGRect與NSDictionary轉換
??? CFDictionaryRef frameDictRef = CGRectCreateDictionaryRepresentation(originalRect);
??? NSDictionary *frameDict = [NSDictionary dictionaryWithDictionary:(NSDictionary*)CFBridgingRelease(frameDictRef)]; // autoreleased
??? CGRect rectFromDic;
??? CGRectMakeWithDictionaryRepresentation((CFDictionaryRef)frameDict, &rectFromDic);
??? NSLog(@"frameDict = %@, rectFromDic = %@",frameDict, NSStringFromCGRect(rectFromDic));
?? ?
#pragma mark -----------------------------------------CGRect 與 NSValue 轉換---------------------------------------------
??? //. CGRect與NSValue轉換
??? /*
???? 在NSArray,NSDictionary容器中只能存儲Objetive-C對象,不能直接存儲C結構體,所有需要存儲矩形時,需要將其轉換為NSValue值。
???? */
??? NSValue *originalRectValue = [NSValue valueWithCGRect:originalRect];
??? CGRect valueRect = [originalRectValue CGRectValue];
??? NSLog(@"originalRectValue = %@, valueRect = %@",originalRectValue, NSStringFromCGRect(valueRect));
?? ?
#pragma mark -----------------------------------------判斷---------------------------------------------
??? //CGRectEqualToRect
??? /*
???? CGRectEqualToRect(CGRect rect1, CGRect rect2)
???? rect1 與 rect2 的origin,size 完全相同 ,返回YES;否則,返回NO;
???? */
??? if (CGRectEqualToRect(unionRect1, unionRect2)) {
??????? NSLog(@"相同");
??? } else {
??????? NSLog(@"不相同");
??? }
?? ?
??? //CGRectIsEmpty(CGRect rect)
??? /*
???? rect的寬度和高度只要有一個就會被定為emptyRect
???? */
??? CGRect emptyRect = CGRectMake(0, 10, 0, 20);
??? if (CGRectIsEmpty(emptyRect)) {
??????? NSLog(@"是 emptyRect");
??? } else {
??????? NSLog(@"不是 emptyRect");
??? }
?? ?
??? //CGRectIsNull(CGRect rect)
??? /*
???? rect 是NSNullRect 返回true
???? */
??? if (CGRectIsNull(originalRect)) {
??????? NSLog(@"是 NSNullRect ");
??? } else {
???????? NSLog(@"不是 NSNullRect ");
??? }
?? ?
??? //CGRectIsInfinite(CGRect rect)
??? /*
???? 判斷是不是無窮大矩形
???? */
??? if (CGRectIsInfinite(originalRect)) {
??????? NSLog(@"是 無窮大 ");
??? } else {
??????? NSLog(@"不是 無窮大 ");
??? }
?? ?
??? //CGRectContainsPoint(CGRect rect, CGPoint point)
??? /*
???? 判斷rect 是不是包含 point 這個點
???? */
??? CGPoint position = CGPointMake(100, 100);
??? if (CGRectContainsPoint(originalRect, position)) {
??????? NSLog(@" rect 包含 point");
??? } else {
??????? NSLog(@" rect 不包含 point");
??? }
?? ?
??? //CGRectContainsRect(CGRect rect1, CGRect rect2)
??? /*
???? 判斷 rect2? 是不是在 rect1 里面
???? */
??? if (CGRectContainsRect(unionRect1, unionRect2)) {
??????? NSLog(@" rect1 包含 rect2");
??? } else {
??????? NSLog(@" rect1 不包含 rect2");
??? }
?? ?
??? //CGRectIntersectsRect(CGRect rect1, CGRect rect2)
??? /*
???? 判斷 rect1 與 rect2 是不是有交集
???? */
??? if (CGRectIntersectsRect(unionRect1, unionRect2)) {
??????? NSLog(@" rect1 與 rect2 有交集");
??? } else {
??????? NSLog(@" rect1 與 rect2 沒有交集");
??? }
???? rect(x,y,width,height);
???? width, height正負代表了從原點的繪制方向,矩形的長寬都是取得絕對值
???? */
?? ?
?? ?
?? ?// Do any additional setup after loading the view, typically from a nib.
#pragma mark -------------------------------------------生成CGRect---------------------------------------
??? CGRect originalRect = CGRectMake(80.44, 30.66, 100.77, 95.88);
??? NSLog(@"originalRect = %@",NSStringFromCGRect(originalRect));
??? // CGRectInfinite 用法
??? /*
???? 生成無窮大矩形
???? */
??? NSLog(@"infiniteRect = %@",NSStringFromCGRect(CGRectInfinite));
?? ?
??? // CGRectNull 用法
??? NSLog(@"nullRect = %@",NSStringFromCGRect(CGRectNull));
?? ?
??? //CGRectZero 用法
??? /*
???? CGRectMake(0, 0, 0, 0)
???? */
??? NSLog(@"zeroRect = %@",NSStringFromCGRect(CGRectZero));
?? ?
??? // CGRectInset 用法
??? CGRect insetRect = CGRectInset(originalRect, 1, 2);
??? /*
???? CGRectInset(originalRect, dx, dy);
??? insetRect.origin.x = originalRect.origin.x + dx ;
??? insetRect.origin.y = originalRect.origin.y + dy;
??? insetRect.size.width = originalRect.size.width - 2 * dx;
??? insetRect.size.height = originalRect.size.height - 2 * dy;
???? */
??? NSLog(@"insetRect = %@",NSStringFromCGRect(insetRect));
?? ?
??? //CGRectOffset 用法
??? CGRect offsetRect = CGRectOffset(originalRect, -1, -2);
??? /*
???? CGRectOffset(originalRect, dx, dy);
???? insetRect.origin.x = originalRect.origin.x + dx ;
???? insetRect.origin.y = originalRect.origin.y + dy;
???? insetRect.size.width = originalRect.size.width;
???? insetRect.size.height = originalRect.size.height;
???? */
??? NSLog(@"offsetRect = %@",NSStringFromCGRect(offsetRect));
?? ?
??? //CGRectIntegral 用法
??? /*
???? 將origin值向下調整到最近整數,size向上調整到最近整數,使生成的CGRect可以完全包含原來的CGRect.
???? */
??? CGRect integralRect = CGRectIntegral(originalRect);
??? NSLog(@"integralRect = %@",NSStringFromCGRect(integralRect));
?? ?
??? //CGRectStandardize 用法
??? /*
???? CGRectStandardize(testRect)
???? standardizeRect.size.width = fabsf(testRect.size.width)//testRect.size.width 的絕對值
???? standardizeRect.size.height = fabsf(testRect.size.height)//testRect.size.height 的絕對值
???? */
??? CGRect testRect = CGRectMake(-5.5, -6.6, -7.7, -8.8);
??? CGRect standardizeRect = CGRectStandardize(testRect);
??? NSLog(@"standardizeRect = %@",NSStringFromCGRect(standardizeRect));
?? ?
??? //CGRectUnion 用法
??? /*
???? CGRectUnion(rect1,rect2) 返回值是能夠包含兩個矩形的最小矩形
???? unionResultRect.origin.x = min(rect1.origin.x, rect2.origin.x);
???? unionResultRect.origin.y = min(rect1.origin.y, rect2.origin.y);
???? unionResultRect.size.width = min(rect1.origin.y, rect2.origin.y);
???? unionResultRect.size.height = min(rect1.origin.y, rect2.origin.y);
???? */
??? CGRect unionRect1 = CGRectMake(100, 50, 60, 70);
??? CGRect unionRect2 = CGRectMake(180, 20, 30, 40);
??? CGRect unionRect3 = CGRectMake(120, 80, 80, 90);
??? CGRect unionResultRect1 = CGRectUnion(unionRect1, unionRect2);
??? CGRect unionResultRect2 = CGRectUnion(unionRect1, unionRect3);
??? NSLog(@"unionResultRect1 = %@, unionResultRect2 = %@",NSStringFromCGRect(unionResultRect1),NSStringFromCGRect(unionResultRect2));
?? ?
??? //CGRectIntersection 用法
??? /*
???? CGRectIntersection(rect1, rect2)
???? 求兩個矩形的交集,返回結果是兩個矩形相交的區域,如果沒有交集的話,返回值是NSNullRect
???? */
??? CGRect interRect1 = CGRectMake(100, 50, 60, 70);
??? CGRect interRect2 = CGRectMake(180, 20, 30, 40);
??? CGRect interRect3 = CGRectMake(120, 80, 80, 90);
??? CGRect intersectionRect1 = CGRectIntersection(interRect1, interRect2);
??? CGRect intersectionRect2 = CGRectIntersection(interRect1, interRect3);
??? NSLog(@"intersectionRect1 = %@, intersectionRect2 = %@",NSStringFromCGRect(intersectionRect1),NSStringFromCGRect(intersectionRect2));
?? ?
#pragma mark ------------------------------------------獲取x,y,width,height---------------------------------------------------
??? //CGRectGetMinX(originalRect),CGRectGetMidX(originalRect),CGRectGetMaxX(originalRect),CGRectGetMinY(originalRect),CGRectGetMidY(originalRect),CGRectGetMaxY(originalRect) , CGRectGetWidth(originalRect), CGRectGetHeight(originalRect)用法
??? /*
???? minX = originalRect.origin.x;
???? midX = (minX + maxX)/2;
???? maxX = (originalRect.origin.x + originalRect.size.width);
??? ?
???? minY = originalRect.origin.y;
???? midY = (minY + maxY)/2;
???? maxY = (originalRect.origin.y + originalRect.size.height);
??? ?
???? width = originalRect.size.width;
???? height = originalRect.size.height;
???? */
??? NSLog(@"minX = %f, midX = %f, maxX = %f, minY = %f, midY = %f, maxY = %f, width = %f, height = %f",CGRectGetMinX(originalRect),CGRectGetMidX(originalRect),CGRectGetMaxX(originalRect),CGRectGetMinY(originalRect),CGRectGetMidY(originalRect),CGRectGetMaxY(originalRect),CGRectGetWidth(originalRect), CGRectGetHeight(originalRect));
?? ?
??? //CGRectGetWidth(originalRect), CGRectGetHeight(originalRect),用法
??? /*
???? width = originalRect.size.width;
???? height = originalRect.size.height;
???? */
??? NSLog(@"width = %f, height = %f",CGRectGetWidth(originalRect), CGRectGetHeight(originalRect));
#pragma mark -----------------------------------------NSString 與 CGRect 轉換-----------------------------------------------
??? //NSString 與 CGRect 轉換
??? NSString *originalRectStr = NSStringFromCGRect(originalRect);
??? CGRect rectFromStr = CGRectFromString(originalRectStr);
??? NSLog(@"originalRectStr = %@, rect = %@",originalRectStr,NSStringFromCGRect(rectFromStr));
?? ?
#pragma mark -----------------------------------------CGRect 與 NSDictionary 轉換---------------------------------------------
??? //.CGRect與NSDictionary轉換
??? CFDictionaryRef frameDictRef = CGRectCreateDictionaryRepresentation(originalRect);
??? NSDictionary *frameDict = [NSDictionary dictionaryWithDictionary:(NSDictionary*)CFBridgingRelease(frameDictRef)]; // autoreleased
??? CGRect rectFromDic;
??? CGRectMakeWithDictionaryRepresentation((CFDictionaryRef)frameDict, &rectFromDic);
??? NSLog(@"frameDict = %@, rectFromDic = %@",frameDict, NSStringFromCGRect(rectFromDic));
?? ?
#pragma mark -----------------------------------------CGRect 與 NSValue 轉換---------------------------------------------
??? //. CGRect與NSValue轉換
??? /*
???? 在NSArray,NSDictionary容器中只能存儲Objetive-C對象,不能直接存儲C結構體,所有需要存儲矩形時,需要將其轉換為NSValue值。
???? */
??? NSValue *originalRectValue = [NSValue valueWithCGRect:originalRect];
??? CGRect valueRect = [originalRectValue CGRectValue];
??? NSLog(@"originalRectValue = %@, valueRect = %@",originalRectValue, NSStringFromCGRect(valueRect));
?? ?
#pragma mark -----------------------------------------判斷---------------------------------------------
??? //CGRectEqualToRect
??? /*
???? CGRectEqualToRect(CGRect rect1, CGRect rect2)
???? rect1 與 rect2 的origin,size 完全相同 ,返回YES;否則,返回NO;
???? */
??? if (CGRectEqualToRect(unionRect1, unionRect2)) {
??????? NSLog(@"相同");
??? } else {
??????? NSLog(@"不相同");
??? }
?? ?
??? //CGRectIsEmpty(CGRect rect)
??? /*
???? rect的寬度和高度只要有一個就會被定為emptyRect
???? */
??? CGRect emptyRect = CGRectMake(0, 10, 0, 20);
??? if (CGRectIsEmpty(emptyRect)) {
??????? NSLog(@"是 emptyRect");
??? } else {
??????? NSLog(@"不是 emptyRect");
??? }
?? ?
??? //CGRectIsNull(CGRect rect)
??? /*
???? rect 是NSNullRect 返回true
???? */
??? if (CGRectIsNull(originalRect)) {
??????? NSLog(@"是 NSNullRect ");
??? } else {
???????? NSLog(@"不是 NSNullRect ");
??? }
?? ?
??? //CGRectIsInfinite(CGRect rect)
??? /*
???? 判斷是不是無窮大矩形
???? */
??? if (CGRectIsInfinite(originalRect)) {
??????? NSLog(@"是 無窮大 ");
??? } else {
??????? NSLog(@"不是 無窮大 ");
??? }
?? ?
??? //CGRectContainsPoint(CGRect rect, CGPoint point)
??? /*
???? 判斷rect 是不是包含 point 這個點
???? */
??? CGPoint position = CGPointMake(100, 100);
??? if (CGRectContainsPoint(originalRect, position)) {
??????? NSLog(@" rect 包含 point");
??? } else {
??????? NSLog(@" rect 不包含 point");
??? }
?? ?
??? //CGRectContainsRect(CGRect rect1, CGRect rect2)
??? /*
???? 判斷 rect2? 是不是在 rect1 里面
???? */
??? if (CGRectContainsRect(unionRect1, unionRect2)) {
??????? NSLog(@" rect1 包含 rect2");
??? } else {
??????? NSLog(@" rect1 不包含 rect2");
??? }
?? ?
??? //CGRectIntersectsRect(CGRect rect1, CGRect rect2)
??? /*
???? 判斷 rect1 與 rect2 是不是有交集
???? */
??? if (CGRectIntersectsRect(unionRect1, unionRect2)) {
??????? NSLog(@" rect1 與 rect2 有交集");
??? } else {
??????? NSLog(@" rect1 與 rect2 沒有交集");
??? }
總結
以上是生活随笔為你收集整理的ios CGRec用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 支付接口
- 下一篇: [密码学基础][每个信息安全博士生应该知