iOS CGRectInset,CGRectOffset

iOS 中有两个有关Rect的方法我们对比这着看一下

CGRectInset,CGRectOffset

我们先看一看 官方给出的解释

/* Inset `rect‘ by `(dx, dy)‘ -- i.e., offset its origin by `(dx, dy)‘, and

decrease its size by `(2*dx, 2*dy)‘. */

大致意思为: 通过 第二个参数 dx和第三个参数 dy 重置第一个参数rect 作为结果返回。重置的方式为,首先将rect 的坐标(origin)按照(dx,dy) 进行平移,然后将rect的大小(size) 宽度缩小2倍的dx,高度缩小2倍的dy;

CG_EXTERN CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy)

CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);

/* Offset `rect‘ by `(dx, dy)‘. */

大致意思:rect 按照(dx,dy)进行平移

CG_EXTERNCGRect CGRectOffset(CGRect rect,CGFloat
dx, CGFloat dy)

CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);

下面我们用例子来看一下

首先我们测试CGRectInset 先创建一个view1设置一个背景色,在创建一个view2使用CGRectInset 将他的大小按照view1的大小进行修改设置一个不同的颜色进行测试

代码如下

-(void)testCGRectInset
{
    UIView *view1=[[UIView alloc]initWithFrame:CGRectMake(120, 120, 200, 200)];
    [view1 setBackgroundColor:[UIColor grayColor]];//view1 设置为灰色
    [self.view addSubview:view1];

    //根据view1的大小变换后创建view2;
    CGRect view2Rect=CGRectInset(view1.frame, 20, 20);
    UIView *view2=[[UIView alloc]initWithFrame:view2Rect];
    [view2 setBackgroundColor:[UIColor blueColor]];//view2 设置为蓝色
    [self.view addSubview:view2];

}

运行结果如下

我们可以看到 蓝色首先按照我们给的参数做了平移 然后对大小做了缩放。

这里我们变化你的时候给的参数都是正数,如果给成负数会怎样了 大家可以去试试

    //根据view1的大小变换后创建view2;
    CGRect view2Rect=CGRectInset(view1.frame, -20, -20);

下来我们看第二个方法,也是同样的思路

代码如下

-(void)testCGRectOffset
{
    UIView *view1=[[UIView alloc]initWithFrame:CGRectMake(120, 120, 200, 200)];
    [view1 setBackgroundColor:[UIColor grayColor]];//view1 设置为灰色
    [self.view addSubview:view1];

    //根据view1的大小变换后创建view2;
    CGRect view2Rect=CGRectOffset(view1.frame, 20, 20);
    UIView *view2=[[UIView alloc]initWithFrame:view2Rect];
    [view2 setBackgroundColor:[UIColor blueColor]];//view2 设置为蓝色
    [self.view addSubview:view2];

}

结果如下图

我们看到相比较与上一个方法 他只做了平移 没有做大小缩放

好了 两个方法 都已经实验了

如果还有问题  可以加群讨论

苹果开发群 :414319235  欢迎加入  欢迎讨论问题

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 23:27:23

iOS CGRectInset,CGRectOffset的相关文章

CGRectInset CGRectoffset UIEdgeInsetsInsetRect 这三个函数的使用情况

//CGRectInset 将原来的矩形放大或者缩小,正表示缩小,-表示放大. CGRect rect= CGRectMake(20, 50, 100, 80); CGRect rect1=CGRectInset(rect, -10, 20); NSLog(@"%@",p(rect1)); //输出结果:2014-11-22 18:48:55.351 TestCGRectInset[8893:60b] {{10, 70}, {120, 40}} //CGRectOffset 这个函数就

CGRectInset & CGRectOffset

1.CGRectInset CGRect CGRectInset (   CGRect rect,   CGFloat dx,   CGFloat dy);以原rect为中心,再参考dx,dy,进行缩放或者放大. 2.CGRectOffset CGRect CGRectOffset(        CGRect rect,         CGFloat dx,         CGFloat dy);相对于源矩形原点rect(左上角的点)沿x轴和y轴偏移, 再rect基础上沿x轴和y轴偏移

Xcode的Architectures和Valid Architectures的区别,

登录 | 注册 ys410900345的专栏 目录视图摘要视图订阅 学院APP首次下载,可得50C币!     欢迎来帮助开源“进步”     当讲师?爱学习?投票攒课吧     CSDN 2015博客之星评选结果公布 关闭 2014-05-14 11:23 651人阅读 评论(0) 收藏 举报 分类: ios 开发(70) 目录(?)[+] 发表于6个月前(2013-10-29 21:07)   阅读(1085) | 评论(1) 2人收藏此文章, 我要收藏 赞1 Architectures V

CGRectInset vs CGRectOffset

1.CGRectInset CGRect CGRectInset ( CGRect rect, CGFloat dx, CGFloat dy ); return rect which is smaller or larger than the source with the same center point CGFloat x,y,width,height,d_x,d_y; CGRect rect = CGRectMake(x,y,width,height); //the origin fra

CGRectOffset与CGRectInset的计算公式

(1)CGRectInset CGRect CGRectInset ( CGRect rect, CGFloat dx, CGFloat dy ); 该结构体的应用是以原rect为中心,再参考dx,dy,进行缩放或者放大. 举例如下: CGRect r1 = CGRectMake(100, 100, 50, 50); CGRect r3 = CGRectInset(r1, 10, 8);//结果应为:110,108,30,34 /************* 计算工式如下*************

CGRectInset、CGRectOffset、等对比整理

http://blog.sina.com.cn/s/blog_76f3236b01013zmk.html   分类: iphone有关 1.CGRectInsetCGRect CGRectInset (    CGRect rect,    CGFloat dx,    CGFloat dy ); 该结构体的应用是以原rect为中心,再参考dx,dy,进行缩放或者放大. 图中的每一个矩形都是以上一个矩形作为参考矩形.所以下一矩形(比如黄色矩形对绿色矩形来说是下一个矩形)都比上一个矩形要小. 具体

IOS开发基础知识--碎片20

1:view中的clipsTobounds属性 iew2添加view1到中,如果view2大于view1,或者view2的坐标不全在view1的范围内,view2是盖着view1的,意思就是超出的部份也会画出来,UIView有一个属性,clipsTobounds 默认情况下是NO.如果,我们想要view2把超出的那部份隐藏起来的话,就得改变它的父视图也就view1的clipsTobounds属性值.view1.clipsTobounds = YES; 可以很好地解决覆盖的问题 2:UIScrol

一些IOS开发中的小技巧

1.打包后提交爆错误 错误信息:ERROR ITMS-90035: "Invalid Signature. Code object is not signed at all. The binary at path [******.app/build-libidn.sh] 解决方案:在Archive 界面上 选择刚生成的那个app 右键 Show in Finder  显示包含内容->Products->Application->应用 右键显示包含内容,找到文件 build-li

IOS(CGGeometry)几何类方法总结

IOS开发几何类方法总结 CGGeometry.h文件是用C语言实现的一个封装了许多常用几何方法的文件. 一.几个常用结构体 struct CGPoint { CGFloat x; CGFloat y; }; 定义一个点,设置x坐标和y坐标 struct CGSize { CGFloat width; CGFloat height; }; 定义一个尺寸,设置宽度和高度 struct CGVector { CGFloat dx; CGFloat dy; }; 定义一个二维矢量 struct CGR