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}
欢迎留言指正,会持续更新!!!
上一篇下一篇

猜你喜欢

热点阅读