OC学习笔记 常用结构体

一般结构体创建方式

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)框架带来

原文地址:https://www.cnblogs.com/zhangdashao/p/4464838.html