CodeV

2.4-使用CGRectDivide()分割矩形

CGRectDivide()函数非常方便。它提供了一个非常简单的方法来划分和再细分矩形到单个区域。在每个步骤中,您指定要切割多少个切片以及从哪个切片切离。您可以从任何边缘切割,即CGRectMinXEdgeCGRectMinYEdgeCGRectMaxXEdgeCGRectMaxYEdge

一系列这些调用构建了图2-3中的图像。清单2-2显示了这是如何完成的。代码所做的操作是从矩形的左边缘切下,然后将剩余部分划分为两个垂直的各半块。从左侧和右侧移除两个相等的部分进一步分解底部的半块。

图2-3

图2-3您可以通过迭代地分割区域来细分矩形。

清单 2-2 创建一系列矩形分割

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
UIBezierPath *path;
CGRect remainder;
CGRect slice;

// Slice a section off the left and color it orange
CGRectDivide(rect, &slice, &remainder, 80, CGRectMinXEdge);
[[UIColor orangeColor] set];
path = [UIBezierPath bezierPathWithRect:slice];
[path fill];

// Slice the other portion in half horizontally
rect = remainder;
CGRectDivide(rect, &slice, &remainder,remainder.size.height / 2, CGRectMinYEdge);

// Tint the sliced portion purple
[[UIColor purpleColor] set];
path = [UIBezierPath bezierPathWithRect:slice];
[path fill];

// Slice a 20-point segment from the bottom left.
// Draw it in gray
rect = remainder;
CGRectDivide(rect, &slice, &remainder, 20, CGRectMinXEdge);
[[UIColor grayColor] set];
path = [UIBezierPath bezierPathWithRect:slice];
[path fill];

// And another 20-point segment from the bottom right.
// Draw it in gray
rect = remainder;
CGRectDivide(rect, &slice, &remainder, 20, CGRectMaxXEdge);
// Use same color on the right
path = [UIBezierPath bezierPathWithRect:slice];
[path fill];

// Fill the rest in brown
[[UIColor brownColor] set];
path = [UIBezierPath bezierPathWithRect:remainder];
[path fill];

本文翻译自《iOS Drawing Practical UIKit Solutions》作者:Erica Sadun,如果觉得本书不错请购买支持正版:亚马逊购买传送门,本书所有源代码可在GitHub上下载。本文译者在翻译时参考了谷歌翻译,欧路词典等工具,译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。