CGPoint、CGSize、CGRect、CGRectEdge实际上都是结构体
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CGPoint CGPoint;
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
enum CGRectEdge {
CGRectMinXEdge, CGRectMinYEdge, CGRectMaxXEdge, CGRectMaxYEdge
};
typedef enum CGRectEdge CGRectEdge;
创建CGPoint、CGSize、CGRect
CGPoint CGPointMake(CGFloat x, CGFloat y);
CGSize CGSizeMake(CGFloat width, CGFloat height);
CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width,CGFloat height);
得到关于CGRect的数据
CGFloat CGRectGetMinX(CGRect rect);
CGFloat CGRectGetMidX(CGRect rect);
CGFloat CGRectGetMaxX(CGRect rect);
CGFloat CGRectGetMinY(CGRect rect);
CGFloat CGRectGetMidY(CGRect rect);
CGFloat CGRectGetMaxY(CGRect rect);
CGFloat CGRectGetWidth(CGRect rect);
CGFloat CGRectGetHeight(CGRect rect);
判断点是否相等
bool CGPointEqualToPoint(CGPoint point1, CGPoint point2)
bool CGSizeEqualToSize(CGSize size1, CGSize size2)
bool CGRectEqualToRect(CGRect rect1, CGRect rect2)
返回一个CGRect(只有当width或height小于零时才有改变)
CGRectMake(1, 1, 1, 1)返回(1, 1, 1, 1)
CGRectMake(1, 1, 1, -1)返回(1, 0, 1, 1)
CGRectMake(1, 1, -1, 1)返回(0, 1, 1, 1)
CGRectMake(1, 1, -1, -1)返回(0, 0, 1, 1)
判断是否为空 既width或height为0
bool CGRectIsEmpty(CGRect rect);
判断是否为空 Null一般时执行某个方法后的返回值(例如两个不相交的CGRect执行相交方法(在下面)返回值为Null)
bool CGRectIsNull(CGRect rect)
判断是否为无穷大
bool CGRectIsInfinite(CGRect rect)
返回一个CGRect,x为原本的x-dx y为原本的y-dy width为原本的width-2dx height为原本的height-2dy
CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy)
情况与CGRectStandardize类似
CGRect CGRectIntegral(CGRect rect)
两个CGRect的合集
CGRect CGRectUnion(CGRect r1, CGRect r2)
两个CGRect的交集
CGRect CGRectIntersection(CGRect r1, CGRect r2)
CGRect向x或y方向便宜 x>0向右偏 x<0向左 y>0向下偏 y<0向上
CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy);
判断point是否在rect内
bool CGRectContainsPoint(CGRect rect, CGPoint point)
判断rect1是否包含rect2
bool CGRectContainsRect(CGRect rect1, CGRect rect2)
判断rect1和rect2是否相交
bool CGRectIntersectsRect(CGRect rect1, CGRect rect2)
CG转字符串
NSString *NSStringFromCGPoint(CGPoint point);
NSString *NSStringFromCGSize(CGSize size);
NSString *NSStringFromCGRect(CGRect rect);
字符串转CG
CGPoint CGPointFromString(NSString *string);
//把字符串转换为点 字符串为@"{2,3}"的形式
CGSize CGSizeFromString(NSString *string);
//把字符串转换为CGSize 字符串为@"{3,4}"的形式
CGRect CGRectFromString(NSString *string);
//把字符串转换为CGRect 字符串为@"{{3,7},{3,4}}"的形式
CGRectDivide介绍
void CGRectDivide (
CGRect rect,
CGRect *slice,
CGRect *remainder,
CGFloat amount,
CGRectEdge edge
);
这个函数的功能很简单,就是将一个 CGRect
切割成两个 CGRect
;其中, rect
参数是你要切分的对象; slice
是一个指向切出的 CGRect
的指针;remainder
是指向切割后剩下的CGRect
的指针; amount
是你要切割的大小;最后一个参数 edge
是一个枚举值,代表 amount
开始计算的方向,假设 amount
为 10.0
那么:
- CGRectMinXEdge 代表在 rect 从左往右数 10 个单位开始切割
- CGRectMaxXEdge 代表在 rect 从右往左数 10 个单位开始切割
- CGRectMinYEdge 代表在 rect 从上往下数 10 个单位开始切割
- CGRectMaxYEdge 代表在 rect 从下往上数 10 个单位开始切割