
CGGeometry
CGGeometry是2D绘图的一个库,定义了基本的几何元素:CGPoint、CGSize、CGRect。
CGRectOffset
CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy);
返回一个原点在源矩形基础上进行了偏移的矩形。
例子:
CGRect rect = CGRectMake(45, 40,
CGRectGetWidth(self.view.frame) - 90,
CGRectGetWidth(self.view.frame) - 90);
UIView *rectView = [[UIView alloc] init];
[rectView setFrame:rect];
[rectView setBackgroundColor:[UIColor cyanColor]];
[self.view addSubview:rectView];
CGRect offRect = CGRectOffset(rect, 10, 10);
UIView *offRectView = [[UIView alloc] init];
[offRectView setFrame:offRect];
[offRectView setBackgroundColor:[UIColor magentaColor]];
[self.view addSubview:offRectView];

CGRectOffset
CGRectInset
CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy);
返回一个与源矩形共中心点的,或大些或小些的新矩形。
矩形将围绕它的中心点进行缩放,左右分别增减dx(总共2dx),上下分别增减 dy(总共 2dy)。
例子:
CGRect insetRect = CGRectInset(rect, 20, 20);
UIView *insetRectView = [[UIView alloc] init];
[insetRectView setFrame:insetRect];
[insetRectView setBackgroundColor:[UIColor orangeColor]];
[self.view addSubview:insetRectView];

CGRectInset
CGRectDivide
void CGRectDivide(CGRect rect, CGRect * slice, CGRect * remainder, CGFloat amount, CGRectEdge edge);
将源矩形分为两个子矩形。
CGRectDivide用以下方式将矩形分割为两部分:
- 传入一个矩形并选择一条
edge(上,下,左,右); - 平行那个边在矩形里量出
amount的长度; - 从
edge到量出的amount区域都保存到slice参数中; - 剩余的部分保存到
remainder参数中。
其中edge参数是一个CGRectEdge枚举类型:
enum CGRectEdge {
CGRectMinXEdge, //左
CGRectMinYEdge, //上
CGRectMaxXEdge, //右
CGRectMaxYEdge //下
}
例子:
CGRect rect1 = CGRectZero;
CGRect rect2 = CGRectZero;
CGRectDivide(rect, &rect1, &rect2, CGRectGetWidth(rect) / 3, CGRectMinXEdge);
UIView *rectView1 = [[UIView alloc] init];
[rectView1 setFrame:CGRectOffset(rect1, 0, CGRectGetHeight(rect) + 20)];
[rectView1 setBackgroundColor:[UIColor greenColor]];
[self.view addSubview:rectView1];
UIView *rectView2 = [[UIView alloc] init];
[rectView2 setFrame:CGRectOffset(rect2, 0, CGRectGetHeight(rect) + 20)];
[rectView2 setBackgroundColor:[UIColor blueColor]];
[self.view addSubview:rectView2];

CGRectMinXEdge
不同CGRectEdge
- CGRectMinYEdge

- CGRectMaxXEdge

- CGRectMaxYEdge

其他
-
CGRectZero: 一个原点在(0, 0),且长宽均为 0 的常数矩形。这个零矩形与CGRectMake(0.0f, 0.0f, 0.0f, 0.0f) 是等价的。 -
CGRectNull: 空矩形。这个会在,比如说,求两个不相交的矩形的相交部分时返回。注意,空矩形不是零矩形。 -
CGRectInfinite: 无穷大矩形。 -
CGRectGetHeight: 返回矩形的高度。 -
CGRectGetWidth: 返回矩形的宽度。 -
CGRectIntegral: 返回包围源矩形的最小整数矩形。 -
CGRectGet[Min|Mid|Max][X|Y]:返回矩形x或y的最小、中间或最大值。