首先确定这两个方法都是对CGRect类型的变量进行操作的,写iOS动画代码时经常用到。
1. CGRectInset
不多说,上代码:
// 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));
结果如下:
原始矩形大小:{{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-2*dx, height = height-2*dy;
图解:
官方文档:
/* Inset `rect' by `(dx, dy)' -- i.e., offset its origin by `(dx, dy)', and
decrease its size by `(2*dx, 2*dy)'. */
2. CGRectOffset
还是上代码:
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));
结果如下:
原始矩形大小:{{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;
图解:
官方文档:
/* Offset `rect' by `(dx, dy)'. */