一,结构体: NSRange
1.简单介绍:
NSRange用来表示A在B中所占的范围
它有两个成员,location和length,它们的类型都是NSUinteger(unsigned long)无符号长整形
例举:字符串:@"I love OC";中,"love"这个字符的范围:location = 2,range = 4
2.创建NSRange类型的变量
NSRange r; // 定义变量后分别给成员赋值 (不推荐使用)
r.location = 2;
r.length = 3;
NSRange r1 = {2,3};// 定义同时初始化,前面是location,后面是length (不推荐使用)
NSRange r2 = {.length = 3,.location = 2};// 定义同时初始化 顺序可自定义 (不推荐使用)
NSRange range = NSMakeRange(2, 3);// (使用函数创建)最常用的方式,前面是location,后面是length
// 提别注意:NSRange是使用了typedef的结构类型,不是类,所以定义变量时不用加 *
3.查找某个字符串在字符串中的范围
NSString *str = @"I love OC";//
NSRange range = [str rangeOfString:@"love"];//rangeOfString 字符串的范围
NSLog(@"range:%@",NSStringFromRange(range));//NSStringFromRange 将范围转为字符串
二,结构体:
NSPoint\CGpoint (x,y)
NSSize\CGSize (width,height)
NSRect\CGRect (CGPoint,CGSize) == (x,y,with,height)
1.简单介绍:
CGPoint代表图像中一个元素的位置,它有两个成员 x 和 y,类型都是CGFloat(double)
CGSize代表一个元素的尺寸,它有两个成员 width 和 height,类型都是CGFloat(double)
CGRect代表一个矩形,它有两个成员CGPoint origin 和 CGSize size ,前者代表矩形左上角的坐标位置,后者代表矩形的宽和高
2.创建表量:
1)使用创建一般结构提的方式创建:
CGPoint p = {10,30};// 定义时直接初始化
CGPoint p1;// 先定义,后初始化
p1.x = 10;
p1.y = 30;
CGSize s = {20,40};// 定义时直接初始化
CGSize s1;// 先定义,后初始化
s1.width = 20;
s1.height = 40;
CGRect r = {{10,30},{20,40}};// 定义时直接初始化
CGRect r1 = {p,s};// 这个初始化方法等同于上个初始化的值
CGRect r2;// 先定义,后初始化
r2.origin.x = 10;
r2.origin.y = 30;
r2.size.width = 20;
r2.size.height = 40;
3.使用函数快速创建:
CGPoint p1 = CGPointMake(10, 30);
CGPoint p2 = NSMakePoint(10, 30);
CGSize s1 = CGSizeMake(20, 40);
CGSize s2 = NSMakeSize(20, 40);
CGRect r1 = CGRectMake(10, 30, 20, 40);
CGRect r2 = NSMakeRect(10, 30, 20, 40);
CGPointZero == CGPointMake(0, 0);
CGSizeZero == CGSizeMake(0, 0);
CGRectZero == CGRectMake(0, 0, 0, 0);
4.常用函数
CGPointEqualToPoint(p1, p2);// 比较两个点的位置是否相同
CGSizeEqualToSize(s1, s2);// 比较两个尺寸是否相同
CGRectEqualToRect(r1, r2);// 比较两个矩形是否占据同样的位置
CGRectContainsPoint(r,p);// 判断 r 这个矩形范围是否包含 p 这个点
BOOL equal = CGPointEqualToPoint(CGPointMake(10, 10), CGPointMake(10, 10));
NSLog(@"%d",equal);// 相等返回 1 不相等返回 0
BOOL contain = CGRectContainsPoint(CGRectMake(50, 40, 100, 50), CGPointMake(80, 80));
NSLog(@"%d",contain);// 包含返回 1 不包含返回 0 |