结构定义
/* Points. */
struct
CGPoint {
CGFloat x;
CGFloat y;
};
typedef struct CG_BOXABLE CGPoint CGPoint;
/* Sizes. */
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CG_BOXABLE CGSize CGSize;
/* Vectors. */
#define CGVECTOR_DEFINED 1
struct CGVector {
CGFloat dx;
CGFloat dy;
};
typedef struct CG_BOXABLE CGVector CGVector;
/* Rectangles. */
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CG_BOXABLE CGRect CGRect;
/* Rectangle edges. */
typedef CF_CLOSED_ENUM(uint32_t, CGRectEdge) {
CGRectMinXEdge, CGRectMinYEdge, CGRectMaxXEdge, CGRectMaxYEdge
};
常用常量
CG_EXTERN const CGPoint CGPointZero
CG_AVAILABLE_STARTING(10.0, 2.0);
常量描述 : 具有位置(0,0)的点常量。零点相当于CGPointMake(0,0)。
CG_EXTERN const CGPoint CGPointZero
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN const CGSize CGSizeZero
CG_AVAILABLE_STARTING(10.0, 2.0);
常量描述 : 宽度和高度为0的大小常量。零大小等于CGSizeMake(0,0)。
CG_EXTERN const CGSize CGSizeZero
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN const CGRect CGRectZero
CG_AVAILABLE_STARTING(10.0, 2.0);
常量描述 : 位置(0,0)、宽度和高度为0的矩形常量。零矩形相当于CGRectMake(0,0,0,0)。
CG_EXTERN const CGRect CGRectZero
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN const CGRect CGRectNull
CG_AVAILABLE_STARTING(10.0, 2.0);
常量描述 : 表示无效值的空矩形。例如,返会两个矩形相交时的矩形,但这两个矩形不相交。空矩形与零矩形不同。例如,矩形与空矩形的并集是原始矩形(即,空矩形不贡献任何内容)。
CG_EXTERN const CGRect CGRectNull
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN const CGRect CGRectInfinite
CG_AVAILABLE_STARTING(10.4, 2.0);
常量描述 : 无限延伸的矩形。
CG_EXTERN const CGRect CGRectInfinite
CG_AVAILABLE_STARTING(10.4, 2.0);
常用函数
CG_INLINE CGPoint CGPointMake(CGFloat x, CGFloat y);
函数描述 : 返回具有指定坐标的点。
参数 :
x : 要构造的点的x坐标。
y : 要构造的点的y坐标。
返回值 : 一个点。
CG_INLINE CGPoint CGPointMake(CGFloat x, CGFloat y);
CG_INLINE CGSize CGSizeMake(CGFloat width, CGFloat height);
函数描述 : 返回具有指定维度值的大小。
参数 :
width : 一个宽度值。
height : 一个高度值。
返回值 : 返回具有指定宽度和高度的CGSize结构。
CG_INLINE CGSize CGSizeMake(CGFloat width, CGFloat height);
CG_INLINE CGVector CGVectorMake(CGFloat dx, CGFloat dy);
函数描述 : 返回具有指定维值的向量。
参数 :
dx : 要构造的向量的x坐标。
dy : 要构造的向量的y坐标。
返回值 : 返回具有指定坐标的CGVector结构。
CG_INLINE CGVector CGVectorMake(CGFloat dx, CGFloat dy);
CG_INLINE CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width,
CGFloat height);
函数描述 : 返回具有指定坐标和大小值的矩形。
参数 :
x : 矩形原点的x坐标。
y : 矩形原点的y坐标。
width : 矩形的宽度。
height : 矩形的高度。
返回值 : 具有指定位置和大小的矩形。
CG_INLINE CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width,
CGFloat height);
CG_EXTERN CGFloat CGRectGetMinX(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回矩形x坐标的最小值。
参数 :
rect : 要检查的矩形。
返回值 : 矩形x坐标的最小值。
CG_EXTERN CGFloat CGRectGetMinX(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN CGFloat CGRectGetMidX(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回建立矩形中心的x坐标。
参数 :
rect : 要检查的矩形。
返回值 : 指定矩形中心的x坐标。
CG_EXTERN CGFloat CGRectGetMidX(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN CGFloat CGRectGetMaxX(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回矩形的x坐标的最大值。
参数 :
rect : 要检查的矩形。
返回值 : 矩形的x坐标的最大值。
CG_EXTERN CGFloat CGRectGetMaxX(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN CGFloat CGRectGetMinY(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回矩形y坐标的最小值。
参数 :
rect : 要检查的矩形。
返回值 : 矩形y坐标的最小值。
CG_EXTERN CGFloat CGRectGetMinY(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN CGFloat CGRectGetMidY(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回建立矩形中心的y坐标。
参数 :
rect : 要检查的矩形。
返回值 : 指定矩形中心的y坐标。
CG_EXTERN CGFloat CGRectGetMidY(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN CGFloat CGRectGetMaxY(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回矩形的y坐标的最大值。
参数 :
rect : 要检查的矩形。
返回值 : 矩形的y坐标的最大值。
CG_EXTERN CGFloat CGRectGetMaxY(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN CGFloat CGRectGetWidth(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回矩形的宽度。无论CGRect数据结构中存储的宽度是正数还是负数,该函数都将返回宽度,就像对矩形进行了标准化一样。也就是说,结果决不是负数。
参数 :
rect : 要检查的矩形。
返回值 : 指定矩形的宽度。
CG_EXTERN CGFloat CGRectGetWidth(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN CGFloat CGRectGetHeight(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回矩形的高度。无论在CGRect数据结构中存储的高度是正数还是负数,该函数都将返回高度,就好像对矩形进行了标准化一样。也就是说,结果决不是负数。
参数 :
rect : 要检查的矩形。
返回值 : 指定矩形的高度。
CG_EXTERN CGFloat CGRectGetHeight(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN bool CGPointEqualToPoint(CGPoint point1, CGPoint point2)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回两个点是否相等。
参数 :
point1 : CGPoint结构。
point2 : CGPoint结构。
返回值 : 一个布尔值,指示是否相等。
CG_EXTERN bool CGPointEqualToPoint(CGPoint point1, CGPoint point2)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN bool CGSizeEqualToSize(CGSize size1, CGSize size2)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 :返回两个大小是否相等。
参数 :
size1 : CGSize结构。
size2 : CGSize结构。
返回值 : 一个布尔值,指示是否相等。
CG_EXTERN bool CGSizeEqualToSize(CGSize size1, CGSize size2)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN bool CGRectEqualToRect(CGRect rect1, CGRect rect2)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回两个矩形的大小和位置是否相等。
参数 :
rect1 : 要检查的第一个矩形。
rect2 : 要检查的第二个矩形。
返回值 : 如果两个指定的矩形具有相同的大小和原点值,或者两个矩形都是空矩形,则为YES,否则为NO。
CG_EXTERN bool CGRectEqualToRect(CGRect rect1, CGRect rect2)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN CGRect CGRectStandardize(CGRect rect) attribute ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回宽度和高度为正的矩形。
参数 :
rect : 源矩形。
返回值 : 表示源矩形但宽度和高度值为正值的矩形。如果rect是空矩形,则返回空矩形。
CG_EXTERN CGRect CGRectStandardize(CGRect rect) __attribute__ ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN bool CGRectIsEmpty(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回矩形的宽度或高度是否为零,或是否为空矩形。空矩形要么是空矩形,要么是高度或宽度为零的有效矩形。
参数 :
rect : 要检查的矩形。
返回值 : 如果指定的矩形为空,则为“YES”;否则为“NO”。
CG_EXTERN bool CGRectIsEmpty(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN bool CGRectIsNull(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回矩形是否等于空矩形。例如,两个不相交矩形相交的结果是一个空矩形。不能绘制空矩形,也不能以特殊方式与其他矩形交互。
参数 :
rect : 要检查的矩形。
返回值 :如果指定的矩形为空,则为“YES”;否则为“NO”。
CG_EXTERN bool CGRectIsNull(CGRect rect)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN bool CGRectIsInfinite(CGRect rect)
CG_AVAILABLE_STARTING(10.4, 2.0);
函数描述 : 返回矩形是否为无穷大。无限矩形是没有定义边界的矩形。可以创建无限矩形作为平铺过滤器的输出。
参数 :
rect :要检查的矩形。
返回值 : 如果指定的矩形是无限的,则返回“YES”;否则返回“NO”。
CG_EXTERN bool CGRectIsInfinite(CGRect rect)
CG_AVAILABLE_STARTING(10.4, 2.0);
CG_EXTERN CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy) attribute ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回一个比源矩形更小或更大、具有相同中心点的矩形。将矩形标准化,然后应用插入参数。如果结果矩形的高度或宽度为负,则返回空矩形。
参数 :
rect : 源CGRect结构。
dx : 用于调整源矩形的x坐标值。若要创建插入矩形,请指定正值。若要创建更大的包围矩形,请指定负值。
dy : 用于调整源矩形的y坐标值。若要创建插入矩形,请指定正值。若要创建更大的包围矩形,请指定负值。
返回值 : 一个矩形。原点值在x轴上偏移dx参数指定的距离,在y轴上偏移dy参数指定的距离,其大小相对于源矩形调整(2dx,2dy)。如果dx和dy为正值,则矩形的大小减小。如果dx和dy为负值,则矩形的大小将增大。
CG_EXTERN CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy) __attribute__ ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN CGRect CGRectIntegral(CGRect rect) attribute ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回将源矩形值转换为整数后得到的最小矩形。
参数 :
rect : 源矩形。
返回值 : 包含源矩形的原点和大小为最小整数值的矩形。也就是说,对于具有分数原点或大小值的矩形,CGRectIntegral将矩形的原点向下舍入,将其大小向上舍入到最接近的整数,从而使结果包含原始矩形。如果rect是空矩形,则返回空矩形。
CG_EXTERN CGRect CGRectIntegral(CGRect rect) __attribute__ ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN CGRect CGRectUnion(CGRect r1, CGRect r2) attribute ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回包含两个源矩形的最小矩形。在计算并之前,两个矩形都是标准化的。如果其中一个矩形为空矩形,则返回另一个矩形的副本(如果两个矩形都为空,则生成空矩形)。否则将返回完全包含源矩形的矩形。
参数 :
r1 : 第一个源矩形。
r2 : 第二个源矩形。
返回值 : 完全包含两个源矩形的最小矩形。
CG_EXTERN CGRect CGRectUnion(CGRect r1, CGRect r2) __attribute__ ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
例如 :
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title = @"测试代码控制器";
self.view1 = [[UIView alloc]initWithFrame:CGRectMake(CGRectGetMaxX(self.view.frame) / 2 - 150 / 2, CGRectGetMaxY(self.view.frame) / 2 - 150 / 2, 150, 150)];
self.view1.backgroundColor = [UIColor redColor];
[self.view addSubview:self.view1];
self.view2 = [[UIView alloc]initWithFrame:CGRectMake(CGRectGetMaxX(self.view.frame) / 2 - 150 / 2, CGRectGetMinY(self.view1.frame) + 30, 150, 150)];
self.view2.backgroundColor = [UIColor greenColor];
[self.view addSubview:self.view2];
self.view3 = [[UIView alloc]initWithFrame:CGRectUnion(self.view1.frame, self.view2.frame)];
self.view3.backgroundColor = [UIColor clearColor];
self.view3.layer.borderWidth = 5.0;
self.view3.layer.borderColor = [UIColor yellowColor].CGColor;
[self.view addSubview:self.view3];
}
样式如下 :
截屏2020-03-17下午11.13.54.pngCG_EXTERN CGRect CGRectIntersection(CGRect r1, CGRect r2) attribute ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回两个矩形的交集,这两个矩形在计算交集之前都是标准化的。
参数 :
r1 : 第一个源矩形。
r2 : 第二个源矩形。
返回值 : 表示两个指定矩形的交点的矩形。如果两个矩形不相交,则返回空矩形。检查此条件,可以使用CGRectIsNull。
CG_EXTERN CGRect CGRectIntersection(CGRect r1, CGRect r2) __attribute__ ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
例如 :
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title = @"测试代码控制器";
self.view1 = [[UIView alloc]initWithFrame:CGRectMake(CGRectGetMaxX(self.view.frame) / 2 - 150 / 2, CGRectGetMaxY(self.view.frame) / 2 - 150 / 2, 150, 150)];
self.view1.backgroundColor = [UIColor redColor];
[self.view addSubview:self.view1];
self.view2 = [[UIView alloc]initWithFrame:CGRectMake(CGRectGetMaxX(self.view.frame) / 2 - 150 / 2, CGRectGetMinY(self.view1.frame) + 30, 150, 150)];
self.view2.backgroundColor = [UIColor greenColor];
[self.view addSubview:self.view2];
self.view3 = [[UIView alloc]initWithFrame:CGRectIntersection(self.view1.frame, self.view2.frame)];
self.view3.backgroundColor = [UIColor yellowColor];
[self.view addSubview:self.view3];
}
样式如下 :
截屏2020-03-18上午9.06.31.pngCG_EXTERN CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy) attribute ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回一个原点与源矩形偏移的矩形。
参数 :
rect : 源矩形。
dx : x坐标的偏移量。
dy : y坐标的偏移量。
返回值 : 与源矩形相同大小的矩形,但其原点在x轴上的偏移量是dx单位,在y轴上的偏移量是dy单位。如果rect是空矩形,则返回空矩形。
CG_EXTERN CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy) __attribute__ ((warn_unused_result))
CG_AVAILABLE_STARTING(10.0, 2.0);
例如 :
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title = @"测试代码控制器";
self.view1 = [[UIView alloc]initWithFrame:CGRectMake(CGRectGetMaxX(self.view.frame) / 2 - 150 / 2, CGRectGetMaxY(self.view.frame) / 2 - 150 / 2, 150, 150)];
self.view1.backgroundColor = [UIColor redColor];
[self.view addSubview:self.view1];
self.view2 = [[UIView alloc]initWithFrame:CGRectOffset(self.view1.frame, 50, 50)];
self.view2.backgroundColor = [UIColor greenColor];
[self.view addSubview:self.view2];
}
样式如下 :
截屏2020-03-18上午8.58.27.pngCG_EXTERN void CGRectDivide(CGRect rect, CGRect * slice,
CGRect * remainder, CGFloat amount, CGRectEdge edge)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 将源矩形分为两个组件矩形。如果rect是空矩形,则此函数将切片矩形和余数矩形输出CGRectNull。
参数 :
rect : 源矩形(要切分的对象)。
slice : 在输入时,指向未初始化矩形的指针。返回时,将使用指定的边缘和值填充矩形,这些值将扩展到amount参数指定的边缘之外的距离。不能为空(一个指向切割出的CGRect的指针)。
remainder : 在输入时,指向未初始化矩形的指针。在返回时,矩形包含源矩形在CGRectEdge生成“切片”矩形后剩余的部分。不能为空(指向切割后剩下的CGRect的指针)。
amount : 在edge参数中指定的到矩形边的距离。这个距离定义了与指定边平行的线,核心图形使用它来划分源矩形(要切割的大小)。
edge : 一个边缘值,它指定测量amount参数中传递的距离的矩形的边。CGRectDivide生成一个“切片”矩形,其中包含指定的边并将数量距离扩展到它之外(edge是一个枚举值,代表 amount 开始计算的方向)。
CG_EXTERN void CGRectDivide(CGRect rect, CGRect * slice,
CGRect * remainder, CGFloat amount, CGRectEdge edge)
CG_AVAILABLE_STARTING(10.0, 2.0);
例如 : 矩形切割(参考https://blog.csdn.net/Dancer2015的博客,人家的想法是好):
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.title = @"测试代码控制器";
///背景视图
UIView *backgroundView = [[UIView alloc]initWithFrame:CGRectMake(CGRectGetMaxX(self.view.frame) / 2 - 240 / 2, CGRectGetMaxY(self.view.frame) / 2 - 190 / 2, 240, 190)];
backgroundView.backgroundColor = [UIColor whiteColor];
backgroundView.layer.shadowColor = [UIColor blackColor].CGColor;
backgroundView.layer.shadowOffset = CGSizeMake(0, 0);
backgroundView.layer.shadowOpacity = 1;
[self.view addSubview:backgroundView];
///设置网格视图
//每个网格视图宽
CGFloat gridViewWidth = 40.0;
//每个网格视图高
CGFloat gridViewHeight = 30.0;
//每个网格视图X轴方向间距
CGFloat paddingX = 10.0;
//每个网格视图Y轴方向间距
CGFloat paddingY = 10.0;
//网格视图的行数
NSInteger numberOfRow = 5;
//网格视图的列数
NSInteger numberOfColumn = 5;
CGRect slice, rowRemainder, columnRemainder;
rowRemainder = backgroundView.bounds;
for (NSInteger i = 0; i < numberOfRow; i++) {
//行切割,循环一次切割出两行,一行为视图,一行为间距
RectCuttingWithPadding(rowRemainder, &slice, &rowRemainder, gridViewHeight, paddingY, CGRectMinYEdge);
columnRemainder = slice;
for (NSInteger j = 0; j < numberOfColumn; j++) {
//列切割,对切割出两行进行多次列切割
RectCuttingWithPadding(columnRemainder, &slice, &columnRemainder, gridViewWidth, paddingX, CGRectMinXEdge);
[self addGridView:slice withSuperView:backgroundView];
}
}
}
///添加网格视图
- (void)addGridView:(CGRect)rect withSuperView:(UIView *)superView{
UIView *gridView = [[UIView alloc] initWithFrame:rect];
gridView.backgroundColor = [UIColor colorWithHue:drand48()
saturation:1.0
brightness:1.0
alpha:1.0];
gridView.layer.borderColor = [[UIColor grayColor] CGColor];
gridView.layer.borderWidth = 0.5;
[superView addSubview:gridView];
}
///矩形切割
void RectCuttingWithPadding(CGRect rect, CGRect *slice, CGRect *remainder, CGFloat amount, CGFloat padding, CGRectEdge edge) {
CGRect tmpSlice;
CGRectDivide(rect, &tmpSlice, &rect, amount, edge);
if (slice) {
*slice = tmpSlice;
}
CGRectDivide(rect, &tmpSlice, &rect, padding, edge);
if (remainder) {
*remainder = rect;
}
}
效果如图 :
截屏2020-03-19上午9.58.52.pngCG_EXTERN bool CGRectContainsPoint(CGRect rect, CGPoint point)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回矩形是否包含指定点。如果某个点的坐标位于矩形内部或最小X或最小Y边上,则该点被视为位于矩形内部。
参数 :
rect : 要检查的矩形。
point : 检查的重点。
返回值 : 如果矩形不为空,且点位于矩形内,则为“YES”;否则为“NO”。
CG_EXTERN bool CGRectContainsPoint(CGRect rect, CGPoint point)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN bool CGRectContainsRect(CGRect rect1, CGRect rect2)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回第一个矩形是否包含第二个矩形。
参数 :
rect1 : 要检查在rect2中传递的矩形的包含性的矩形。
rect2 : 要检查的矩形是否包含在rect1中传递的矩形中。
返回值 : 如果rect2指定的矩形包含在rect1中传递的矩形中,则为“YES”;否则为“NO”。如果两个矩形的并集等于第一个矩形,则第一个矩形包含第二个矩形。
CG_EXTERN bool CGRectContainsRect(CGRect rect1, CGRect rect2)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN bool CGRectIntersectsRect(CGRect rect1, CGRect rect2)
CG_AVAILABLE_STARTING(10.0, 2.0);
函数描述 : 返回两个矩形是否相交。
参数 :
rect1 : 要检查的第一个矩形。
rect2 : 要检查的第二个矩形。
返回值 : 如果两个指定矩形相交,则为“YES”;否则为“NO”。如果矩形的交点不等于空矩形,则第一个矩形与第二个矩形相交。
CG_EXTERN bool CGRectIntersectsRect(CGRect rect1, CGRect rect2)
CG_AVAILABLE_STARTING(10.0, 2.0);
CG_EXTERN CFDictionaryRef CGPointCreateDictionaryRepresentation(
CGPoint point)
CG_AVAILABLE_STARTING(10.5, 2.0);
函数描述 : 返回指定点的字典表示形式。
参数 :
point : 一个点。
返回值 : 点的字典表示法。
CG_EXTERN CFDictionaryRef CGPointCreateDictionaryRepresentation(
CGPoint point)
CG_AVAILABLE_STARTING(10.5, 2.0);
CG_EXTERN bool CGPointMakeWithDictionaryRepresentation(
CFDictionaryRef cg_nullable dict, CGPoint * cg_nullable point)
CG_AVAILABLE_STARTING(10.5, 2.0);
函数描述 : 使用指定字典的内容填充点。
参数 :
dict : 以前从函数CGPointCreateDictionaryRepresentation返回的字典。
point : 返回时,从提供的字典创建的点。
返回值 : 如果成功,则为“YES”;否则为“NO”。
CG_EXTERN bool CGPointMakeWithDictionaryRepresentation(
CFDictionaryRef cg_nullable dict, CGPoint * cg_nullable point)
CG_AVAILABLE_STARTING(10.5, 2.0);
CG_EXTERN CFDictionaryRef CGSizeCreateDictionaryRepresentation(CGSize size)
CG_AVAILABLE_STARTING(10.5, 2.0);
函数描述 : 返回指定大小的字典表示形式。
参数 :
size : 一个尺寸。
返回值 :大小的字典表示形式。
CG_EXTERN CFDictionaryRef CGSizeCreateDictionaryRepresentation(CGSize size)
CG_AVAILABLE_STARTING(10.5, 2.0);
CG_EXTERN bool CGSizeMakeWithDictionaryRepresentation(
CFDictionaryRef cg_nullable dict, CGSize * cg_nullable size)
CG_AVAILABLE_STARTING(10.5, 2.0);
函数描述 : 使用指定字典的内容填充大小。
参数 :
dict : 以前从函数CGSizeCreateDictionaryRepresentation返回的字典。
size : 返回时,从指定字典创建的大小。
返回值 : 如果成功,则为“YES”;否则为“NO”。
CG_EXTERN bool CGSizeMakeWithDictionaryRepresentation(
CFDictionaryRef cg_nullable dict, CGSize * cg_nullable size)
CG_AVAILABLE_STARTING(10.5, 2.0);
CG_EXTERN CFDictionaryRef CGRectCreateDictionaryRepresentation(CGRect)
CG_AVAILABLE_STARTING(10.5, 2.0);
函数描述 : 返回所提供矩形的字典表示形式。
参数 :
rect : 一个矩形。
返回值 : 矩形的字典表示形式。
CG_EXTERN CFDictionaryRef CGRectCreateDictionaryRepresentation(CGRect)
CG_AVAILABLE_STARTING(10.5, 2.0);
CG_EXTERN bool CGRectMakeWithDictionaryRepresentation(
CFDictionaryRef cg_nullable dict, CGRect * cg_nullable rect)
CG_AVAILABLE_STARTING(10.5, 2.0);
函数描述 : 使用指定字典的内容填充矩形。
参数 :
dict : 以前从函数CGRectCreateDictionaryRepresentation返回的字典。
rect : 返回时,从指定字典创建的矩形。
返回值 : 如果成功,则为“YES”;否则为“NO”。
CG_EXTERN bool CGRectMakeWithDictionaryRepresentation(
CFDictionaryRef cg_nullable dict, CGRect * cg_nullable rect)
CG_AVAILABLE_STARTING(10.5, 2.0);
/*** 内联函数的定义 ***/
CG_INLINE CGPoint
CGPointMake(CGFloat x, CGFloat y)
{
CGPoint p; p.x = x; p.y = y; return p;
}
CG_INLINE CGSize
CGSizeMake(CGFloat width, CGFloat height)
{
CGSize size; size.width = width; size.height = height; return size;
}
CG_INLINE CGVector
CGVectorMake(CGFloat dx, CGFloat dy)
{
CGVector vector; vector.dx = dx; vector.dy = dy; return vector;
}
CG_INLINE CGRect
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = x; rect.origin.y = y;
rect.size.width = width; rect.size.height = height;
return rect;
}
CG_INLINE bool
__CGPointEqualToPoint(CGPoint point1, CGPoint point2)
{
return point1.x == point2.x && point1.y == point2.y;
}
#define CGPointEqualToPoint __CGPointEqualToPoint
CG_INLINE bool
__CGSizeEqualToSize(CGSize size1, CGSize size2)
{
return size1.width == size2.width && size1.height == size2.height;
}
#define CGSizeEqualToSize __CGSizeEqualToSize
CF_ASSUME_NONNULL_END
CF_IMPLICIT_BRIDGING_DISABLED
#endif /* CGGEOMETRY_H_ */
网友评论