iOS CGRectInset,CGRectOffset

iOS CGRectInset,CGRectOffset

分类:iOS

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_EXTERNCGRectCGRectInset(CGRectrect,CGFloatdx,CGFloatdy)

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 欢迎加入 欢迎讨论问题

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

上一篇iOS frame bouns 区别下一篇iOS 判断当前屏幕旋转状态

顶0踩0

我不敢说我明天便可以做一个快乐的人,面朝大海春暖花开。

iOS CGRectInset,CGRectOffset

相关文章:

你感兴趣的文章:

标签云: