关于CGRectInset和CGRectOffset简单说明

首先确定这两个方法都是对CGRect类型的变量进行操作的,写iOS动画代码时经常用到。

1. CGRectInset

不多说,上代码:

1
2
3
4
5
6
7
8
9
// center 为 (200, 200), 由(100+200/2, 100+200/2)得
CGRect originalRect = CGRectMake(100, 100, 200, 200);

CGRect rect_Inset1 = CGRectInset(originalRect, 10, 10);
CGRect rect_Inset2 = CGRectInset(originalRect, -10, -10);

NSLog(@"原始矩形大小:%@", NSStringFromCGRect(originalRect));
NSLog(@"dx=10, dy=10, CGRectInset:%@", NSStringFromCGRect(rect_Inset1));
NSLog(@"dx=-10, dy=-10, CGRectInset:%@", NSStringFromCGRect(rect_Inset2));

结果如下:

1
2
3
原始矩形大小:{{100, 100}, {200, 200}}
dx=10, dy=10, CGRectInset:{{110, 110}, {180, 180}}
dx=-10, dy=-10, CGRectInset:{{90, 90}, {220, 220}}

根据结果得知:

  1. 原始矩形center不变,始终是(200, 200);
  2. 原始矩形size变化,width = width-2dx, height = height-2dy;
    图解:
    这里写图片描述
    官方文档:
    1
    2
    /* Inset `rect' by `(dx, dy)' -- i.e., offset its origin by `(dx, dy)', and
    decrease its size by `(2*dx, 2*dy)'. */

2. CGRectOffset

还是上代码:

1
2
3
4
5
6
7
8
CGRect originalRect = CGRectMake(100, 100, 200, 200);

CGRect rect_Offset1 = CGRectOffset(originalRect, 10, 10);
CGRect rect_Offset2 = CGRectOffset(originalRect, -10, -10);

NSLog(@"原始矩形大小:%@", NSStringFromCGRect(originalRect));
NSLog(@"dx=10, dy=10, CGRectOffset:%@", NSStringFromCGRect(rect_Offset1));
NSLog(@"dx=-10, dy=-10, CGRectOffset:%@", NSStringFromCGRect(rect_Offset2));

结果如下:

1
2
3
原始矩形大小:{{100, 100}, {200, 200}}
dx=10, dy=10, CGRectOffset:{{110, 110}, {200, 200}}
dx=-10, dy=-10, CGRectOffset:{{90, 90}, {200, 200}}

根据结果得知:

  1. 原始矩形size不变,始终是 (200, 200);
  2. 原始矩形center改变,x = x+dx, y = y+dy;
    图解:
    这里写图片描述
    官方文档:
1
/* Offset `rect' by `(dx, dy)'. */

以上若有错误或不足,欢迎指正,感谢

显示 Gitment 评论