NSRange
表示某些元素在母体中所处的位置和长度,如果在母体中找不到返回loc=NSNotFound(-1),len=0;
成员:NSUInteger location (NSUInteger本质为:unsigned long)
NSUInteger length
赋值可调用框架下函数:NSMakeRange(NUIntger loc,NUInteger len);
代码演示:
NSRange range=NSMakeRange(3, 5); //定义一个NSRange类型的变量range,并初始化range的loc为3,len为5
NSRange应用
代码演示:
NSString *str=@"my name is itcast";
NSRange ran=[str rangeOfString:@"name"]; //定义NSRange类型变量ran,并初始化为name在str字符串中的位置及长度
NSLog(@"loc=%ld,len=%ld",ran.location,ran.length);
//打印结果为:loc=3,len=4
NSPoint/CGPoint
表示二维空间的一个点。
NSPoint与CGPoint等价(本质为typedef CGPoint NSPoint),一般用CGPoint,它可跨平台
成员:CGFloat x; (CGFloat本质为:double )
CGFloat y;
赋值可调用框架下函数:CGPointMake(CGFloat x,CGFloat y);或NSMakePoint(CGFloatx,CGFloat y);
代码演示:
CGPoint point=CGPointMake(3.5, 2.5); //定义CGPoint类型的变量point并初始化横坐标为3.5,纵坐标为2.5
NSSize/CGSize
表示一个UI元素的尺寸(面积)
成员:CGFloat width; (CGFloat本质为:double )
CGFloat height;
赋值可调用框架下函数:CGSizeMake(CGFloat x,CGFloat y);或NSMakeSize(CGFloatx,CGFloat y);
代码演示:
CGSize size=CGSizeMake(6, 8); //定义CGSize类型的变量size并初始化宽度为6,高度为8
NSRect/CGRect
表示某一位置某个尺寸的UI元素
成员:
CGPoint origin;
CGSize size;
赋值可调用框架下函数:CGSizeMake(CGFloat x,CGFloat y,CGFloat width,CGFloat height);或NSMakeSize(CGFloatx,CGFloat y,CGFloat width,CGFloat height);
代码演示:
CGRect rect=CGRectMake(2, 5, 15, 18); //定义一个CGRect类型的变量size并初始化为在2,5位置宽度为15,高度为18
结构体的常用打印方式
通常将结构体转换为字符串类型打印
代码演示:
CGPoint point=CGPointMake(3.5,2.5);
CGSize size=CGSizeMake(6, 8);
CGRect rect=CGRectMake(2, 5, 15, 18);
NSString *str1=NSStringFromPoint(point); //将CGPoint类型转换为NSString类型
NSString *str2=NSStringFromSize(size); //将CGSize类型转换为NSString类型
NSString *str3=NSStringFromRect(rect); //将CGRect类型转换为NSString类型
NSLog(@"point:%@,size:%@,rect:%@",str1,str2,str3);
<pre name="code" class="objc"> //打印结果为:point:{3.5, 2.5},size:{6, 8},rect:{{2, 5}, {15, 18}}
结构体常用函数
//判断两个结构体是否相等的函数
BOOL p=CGPointEqualToPoint(CGPointMake(10, 8), CGPointMake(10, 8)); //判断两个点是否相同
BOOL s=CGSizeEqualToSize(CGSizeMake(5, 8), CGSizeMake(6, 9)); //判断两个size是否相同
BOOL r=CGRectEqualToRect(CGRectMake(0, 0, 5, 8), CGRectMake(0, 0, 5, 8)); //判断两个rect是否相同
/*判断一个点(CGPoing)是否在一个区域(CGRect)内的函数CGRectContainPoint,此函数定义在CoreGraphics框架中,使用前需导入此框架*/
CGPoint point=CGPointMake(3.5,8);
CGRect rect=CGRectMake(2, 5, 15, 18);
BOOL cont=CGRectContainsPoint(rect, point); NSLog(@"\npoint是否相同:%d\nsize是否相同%d\nrect是否相同:%d\npoint是否在rect内:%d",p,s,r,cont);
//输出结果为:point是否相同:1 size是否相同0 rect是否相同:1 point是否在rect内:1