NSObject中关于CGRect的一些用法

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 开始计算的方向,假设 amount10.0 那么:

  • CGRectMinXEdge 代表在 rect 从左往右数 10 个单位开始切割
  • CGRectMaxXEdge 代表在 rect 从右往左数 10 个单位开始切割
  • CGRectMinYEdge 代表在 rect 从上往下数 10 个单位开始切割
  • CGRectMaxYEdge 代表在 rect 从下往上数 10 个单位开始切割

你可能感兴趣的:(NSObject中关于CGRect的一些用法)