iOS官方文档 Foundation篇---Geometry
2019-02-11 本文已影响6人
qianfei
有权力的人,只要轻声细语,每一个人都能听得详细;没权力的人,就算声嘶力竭,也没人听闻。
————魔王子
CGFloat
浮点值的基本类型
CGPoint
笛卡尔坐标系中的一个点
//创建
CGPoint point = CGPointMake(0, 0);
CGPoint pointZero = CGPointZero;//{0,0}
CGPoint point2 = CGPointFromString(@"{1,2}");
//判断相等
BOOL isEqual = CGPointEqualToPoint(point, pointZero);
//字符串表示
NSString *pointStr = NSStringFromCGPoint(point);//{0, 0}
CGSize
二维尺寸
//创建
CGSize sizeZero = CGSizeZero;
CGSize size = CGSizeMake(1, 1);
CGSize size2 = CGSizeFromString(@"{1,2}");//width = 1, height = 2
//判断相等
BOOL isEqual = CGSizeEqualToSize(size, sizeZero);
//字符串表示
NSString *sizeStr = NSStringFromCGSize(size1);//{1, 1}
CGRect
矩形
//创建矩形
CGRect rect = CGRectMake(0, 0, 40, 40);
NSString *rectStr = NSStringFromCGRect(rect);//{{0, 0}, {40, 40}}
CGRect rectZero = CGRectZero;//{,0,0,0,0}
//文本的表示形式返回一个矩形
CGRect strRect = CGRectFromString( @"{{0, 0}, {20.12345, 20.6789}}");
//获取矩形值
CGFloat maxX = CGRectGetMaxX(rect);//40
CGFloat minX = CGRectGetMinX(rect);//0
CGFloat maxY = CGRectGetMaxY(rect);//40
CGFloat minY = CGRectGetMinY(rect);//0
CGFloat midX = CGRectGetMidX(rect);//20
CGFloat midY = CGRectGetMidY(rect);//20
CGFloat width = CGRectGetWidth(rect);//40
CGFloat height = CGRectGetHeight(rect);//40
//将矩形划分为两个新矩形。
/*
rect 要切分的对象;
slice 是一个指向切出的 CGRect 的指针;
remainder 是指向切割后剩下的 CGRect 的指针
amount 是你要切割的大小;
edge 是一个枚举值,代表 amount 开始计算的方向
CGRectMinXEdge 代表在 rect 从左往右开始切割
CGRectMaxXEdge 代表在 rect 从右往左开始切割
CGRectMinYEdge 代表在 rect 从上往下开始切割
CGRectMaxYEdge 代表在 rect 从下往上开始切割
*/
CGRect silce, remainder;
CGRectDivide(rect, &silce, &remainder, 20,
CGRectMinXEdge);
// silce {0,0,20,40}
// remainder {20,0,20,40}
//判断两个矩形是否相同
BOOL isEqual = CGRectEqualToRect(rect, rect);//YES
//判断矩形是否为空
BOOL isnull = CGRectIsNull(rect);//NO
//以已有矩形为基础通过向x轴,y轴平移产生新的矩形(正值向内平移,负值向外平移)
CGRect rectInset = CGRectInset(rect, 1, 1);// {1,1,38,38}
CGRect rectInset = CGRectInset(rect, -1, -1);// {-1,-1,42,42}
//将矩形的边调整为整数值(只入不舍)
CGRect rectIntegral = CGRectIntegral(strRect);//{0,0,21,21}
//两矩形是否相交
BOOL isSec = CGRectIntersectsRect(rect, RectZero);//YES
//计算两个矩形的交集
CGRect rectInter = CGRectIntersection(rect, rectIntegral);//{0,0,21,21}
//计算两个矩形的并集
CGRect rect7 = CGRectUnion(RectZero, rect);//{0,0,40,40}
//矩形偏移
CGRect RectOffset = CGRectOffset(rect, 10, 10);//{10,10,40,40}
//矩形是否包含点
BOOL pointIsIn = CGRectContainsPoint(rect, CGPointZero);//YES
//矩形是否包含另一个矩形
BOOL rectIsIn = CGRectContainsRect(rect, silce);//YES
CGAffineTransform
图形坐标转换
//还原
CGAffineTransformIdentity
//默认
CGAffineTransformMake(1, 0, 0, 1, 0, 0);
//在x轴方向上平移x单位,在y轴方向上平移y单位
CGAffineTransform transform = CGAffineTransformMakeTranslation(10, 10);
//在x轴方向上缩放x倍,在y轴方向上缩放y倍
CGAffineTransform transformscale = CGAffineTransformMakeScale(2, 0.5);
//将坐标系统逆时针旋转angle弧度
CGAffineTransform transformrotation = CGAffineTransformMakeRotation(M_PI_2);
//以一个已经存在的形变为基准,在x轴方向上平移x单位,在y轴方向上平移y单位
CGAffineTransformTranslate(transform, 10, 10);
//以一个已经存在的形变为基准,在x轴方向上缩放x倍,在y轴方向上缩放y倍
CGAffineTransformScale(transformscale, 2, 1);
//以一个已经存在的形变为基准,将坐标系统逆时针旋转angle弧度
CGAffineTransformRotate(transformrotation, M_2_PI);
CGEdgeInsets
矩形边缘
// 上左下右
UIEdgeInsetsMake(0, 0, 0, 0);
NSRange
范围
//从第0位开始计算,长度为4
NSRange range = NSMakeRange(0, 4);
NSRange range1 = NSMakeRange(0, 5);
//判断range是否相等
BOOL isaqual = NSEqualRanges(range, range1);//NO
//指定范围的交集。
NSRange intersection = NSIntersectionRange(range, range1);//{3,1}
//指示指定位置是否在给定范围内。
BOOL isIn = NSLocationInRange(1, range1);//NO
//返回范围的位置和长度的总和。
NSUInteger max = NSMaxRange(range);//4
//返回文本表示的范围。
NSRange strRange = NSRangeFromString(@"2 3");//{2,3}
//返回范围的字符串表示形式。
NSString *rangeStr = NSStringFromRange(range);//{0, 4}
//返回指定范围的并集。
NSRange unionRange = NSUnionRange(range, range1);//{0,8}
//根据内容返回范围
NSString *text = @"qwerty";
NSRange textRange = [text rangeOfString:@"qwe"];//{0,3}