一般结构体创建方式
1 struct Date 2 { 3 int year; 4 int month; 5 int days; 6 }; 7 struct Date d1 = {2015,4,28}; 8 struct Date d2 = {.month = 4,.days = 28,.year = 2015 };
常用结构体函数
1 // NSRange(location,length); //表示范围 2 // NSPoint/CGPoint//表示坐标 3 // NSSize/CGSize//表示UI元素的尺寸 4 // NSRect/CGRect(CGPint CGSize)//一个UI元素的尺寸
一、NSRange使用
1>NSRange 查找字符串范围
1 void test(NSString *str,NSString *name) 2 { 3 //查找某个字符串再str中的范围 如果找不到范围 为 0; 4 // NSString *str = str; 5 NSRange range = [str rangeOfString:name]; 6 NSLog(@"loc = %ld length= %ld",range.location,range.length); 7 }
1 int main(){ 2 test(@"i love oc",@"love"); 3 //输出结果是 loc = 2 length= 4 4 test(@"i love oc", @"java"); 5 //输出结果是 loc = 9223372036854775807(转换为整数为-1USNotFound==-1) length= 0 6 NSLog(@"%ld",NSNotFound);// 9223372036854775807 7 NSLog(@"%d",NSNotFound);// -1 8 }
2>NSmakeRange
NSRange NSMakeRange (
NSUInteger loc,
NSUInteger len
);
1 NSRange r1 = {2,4};//效率低 2 NSRange r2 = {.location = 2, .length = 4};//不用 3 NSRange r = NSMakeRange(2, 4);//掌握(工作中常用) 在实际开发中最常用的是使用Foundation框架自带的函数
二、NSPoint/CGPoint的使用(表示坐标)
开发中常用CGPoint 因为它跨平台
1 CGPoint p1 = NSMakePoint(10, 10); 2 NSPoint p2 = CGPointMake(10, 10);//开发中最常用
1 CGPoint p1 = NSMakePoint(10, 10); 2 NSPoint p2 = CGPointMake(10, 10);//开发中最常用 3 CGPoint p3 = CGPointMake(20, 20);//可混用
三、NSSize/CGSize的使用
表示UI元素的尺寸 如按钮的宽和高
1 NSSize s1 = CGSizeMake(100, 50)//宽度100高度50 2 CGSize s2 = NSMakeSize(100, 50); 3 CGSize s3 = CGSizeMake(200, 60); 4 NSSize s4 = NSMakeSize(200, 60);
四、NSRect/CGRect的使用
一个UI元素的尺寸 (原点在左上角) 在屏幕上x/y轴坐标 元素(如按钮)所占宽高
1 CGRect c1 = CGRectMake(0, 0,100,10); 2 CGRect c2 = {{0,0},{100,90}};
1 NSPoint p2 = CGPointMake(10, 10); 2 CGSize s2 = NSMakeSize(100, 50); 3 CGRect c3 = {p2,s2};
CGSizeZero == CGPointMake(0, 0);//表示原点
五 Foundation框架中一些经常用到的结构体函数
比较两块区域是否相同
1 bool b = CGRectEqualToRect(c1, c2);//c1,c2在上面
比较两个尺寸是否相等
1 CGSizeEqualToSize(s1, s2);
将结构体转为字符串
1 NSPoint p2 = CGPointMake(10, 10);
2 NSString *str = NSStringFromPoint(p2);
3 NSLog(@"%@------",str);
4//打印测试
5 2015-04-29 08:19:52.691 01-结构体[1099:83924] {10, 10}------
比较两个点是否相等
1 bool b1 = CGPointEqualToPoint(CGPointMake(10, 10),CGPointMake(10, 10));
判断这个点是否在区域范围内
x(50-150)y(40-90)
1 bool b2 = CGRectContainsPoint(CGRectMake(50,40,100,50), CGPointMake(130,70));
结果(0代表false1表示true)
1 NSLog(@"%d-%d",b1,b2); 2 3 2015-04-29 08:19:52.691 01-结构体[1099:83924] 1-1
补充1:导入框架 Build phase->link (+)
补充2:ios中坐标原点在左上角。
NS开头函数是由于乔布斯将上个公司(next)框架带来