/*
     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 CGRect的更多相关文章

  1. [转]IOS开发中的CGFloat、CGPoint、CGSize和CGRect

    http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGGeometry/Reference ...

  2. IOS开发中的CGFloat、CGPoint、CGSize和CGRect

    IOS开发中的CGFloat.CGPoint.CGSize和CGRect http://developer.apple.com/library/ios/#documentation/GraphicsI ...

  3. UI基础:UIView(window,frame,UIColor,CGPoint,alpha,CGRect等) 分类: iOS学习-UI 2015-06-30 20:01 119人阅读 评论(0) 收藏

    UIView 视图类,视图都是UIView或者UIView子类 UIWindow 窗口类,用于展示视图,视图一定要添加window才能显示 注意:一般来说,一个应用只有一个window 创建一个UIW ...

  4. iOS 开发中的CGFloat,CGPoint,CGSize和CGRect

    CGGeometry类定义几何元素的结构和操作集合元素的函数 1. 数据类型 CGFloat: 浮点值的基本类型 CGPoint: 表示一个二维坐标系中的点 CGSize: 表示一个矩形的宽度和高度 ...

  5. iOS 保存CGRect,CGPoint到NSArray'的方法

    由于CGRect和CGPoint等对象是Struct,即结构体,不是继承于NSObject的,所以需要先用NSValue的方法,把他们转化成NSValue对象,之后就可以存入NSArray了! @in ...

  6. IOS常用CGRect的交错,边缘,中心的检测

    转自:http://tsyouaschen.iteye.com/blog/1946957 判断给定的点是否被一个CGRect包含,可以用CGRectContainsPoint函数 BOOL conta ...

  7. iOS开发-UIView扩展CGRect

    关于UIView的位置都会遇到,一般需要改变UIView的位置,需要先获取原有的frame位置,然后在frame上面修改,有的时候如果只是改变了一下垂直方向的位置,宽度和高度的一种,这种写法很麻烦.下 ...

  8. ios开发之--CGRect/CGSize/CGPoint/CGVector/CGAffineTransform/UIEdgeInsets/UIOffset和NSString之间的转换

    仅做记录,一个函数和字符串之间的互相转换 方法如下: UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point); UIKIT_EXTERN N ...

  9. iOS开发小技巧--UIButton的另一种布局方法(第一种在layoutSubViews方法中,这一种利用苹果提供的两个返回CGRect的方法)

随机推荐

  1. angular.js中插值语法和ng-bind以及ng-model的区别

    首先呢,插值语法也就是{{}}和ng-bind基本上是没有区别的. 主要区别在于,使用花括号语法时,在AngularJS使用数据替换模板中的花括号时,第一个加载的页面,通常是应用中的index.htm ...

  2. Socket通信基本原理

    Http通信: http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据. Socket通信: Socket通信则是在双方建立起连接后就 ...

  3. 关于json解析中 解析多重json对象

    JSONObject rst = {"AIS-RST":"AIS-00000001","AIS-STATUS":"AIS-0000 ...

  4. Height Half Values

    public class HeightDemo { /** * 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半: * 再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? * ...

  5. 在app中打开appStore中其他app

    var str = "https://itunes.apple.com/cn/app/zhang-jiange-hao-tou-zi-ke/id402382976?mt=8"//这 ...

  6. Nginx开启Gzip压缩

    .Vim打开Nginx配置文件 vim /usr/local/nginx/conf/nginx.conf .找到如下一段,进行修改 gzip on; gzip_min_length 1k; gzip_ ...

  7. XML转JSON

    Step 1 : 下载 java-json.jar http://www.java2s.com/Code/JarDownload/java/java-json.jar.zip Step 2: 增加 j ...

  8. 成都印迹婚纱摄影 | yinjilove.com

    成都印迹婚纱摄影工作室 官方网站:http://yinjilove.com/ 联系方式:028-84278563 手机及微信号:18180642817 微信公众号:印迹摄影 地址:成都市锦江区牛王庙东 ...

  9. PHP的高效IOC框架——CanoeDI

    一个非常简单且实用的IoC框架,相对于其他的Ioc框架有如下特点: 高效: 框架使用了非常实用且高效的算法,使得框架本身对应用的影响微乎其微,且框架提供了C扩展,最大限度的将性能提升到最高. 配置简单 ...

  10. loading动画效果记录

    看到好多网页都有一个炫酷的loading动画,以前不知道怎么实现的.今天学习了一下,发现其实也很简单. 首先在学习的时候偶然遇到一个pace.js的库,非常好用.优点是,不需要挂接到任何代码,自动检测 ...