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];
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];
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];
不同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的最小、中间或最大值。
参考
- CGGeometry