A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Medwyn 中级黑马   /  2014-7-3 22:57  /  1782 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Medwyn 于 2014-7-5 22:02 编辑

李老师的视频到了Foundation这部分就没有文档了,为了方便刚学习的朋友,我把自己的笔记分享一下,由于代码块较多,就不使用插入代码功能了,格式可能有些乱,海涵~~
   /*
了解以下四个结构体如何使用以及他们的用处
     NSRange(location length)
     NSPoint\CGPoint
     NSSize\CGSize
     NSRect
     */
        使用以下函数必须添加CoreGraphics框架
1.NSRange

//     range是范围的意思,顾名思义,NSRange是表示范围的方法
//     NSRange的定义:
//     typedef struct _NSRange {
//     NSUInteger location;
//     NSUInteger length;
//     } NSRange;
//     其中NSUInteger是unsigned long类型
//     
       举个例子:
//     @"i love oc"
//     location:2
//     length:4
//     上面两行代码表示love
注意:从0开始,空格也算
//     
//     {10,19,32,52,43,54}
//     location:2
//     length:4
//     表示:32 53 43 54
//     
//     如何创建
//     
//     回忆下以前学过的知识:
    struct Date{
        int year;
        int month;
        int day;
    };
   
    struct Date d1 = {2011,2,11};//在定义的同时赋值,与struct内的实例一一对应
    struct Date d2 = {.month = 2, .day = 11, .year = 2011};//使用点语法创建一个新结构体
   
   
//    由于NSRange的定义中使用了typedef关键字,因此我们创建一个NSRange结构体就不需要加struct关键字了。
   
    @"i love oc";//love的范围
    NSRange r1 = {2 ,4}; //可读性差,一般开发中不使用
    NSRange r2 = {.length = 4, .location = 2};//太长,也不用
   
//    我们常用Foundation框架自带的函数来创建一个新的NSRange结构体
    NSRange r3 = NSMakeRange(2, 4);//开发中常用  掌握   

2.NSString  
   
//    创建一段新的字符串
    NSString *str = @"i love oc";
   
    //查找某个字符串在str的范围
    NSRange range = [str rangeOfString:@"ve o"];
    NSRange range2 = [str rangeOfString:@"java"];//如果找不到,length=0,location=NSNotFound=-1,此时打印的是loc = 9223372036854775807, length = 0,其中loc对应的那串数字是以无符号整型的方式打印的,转换成signed int方式就是-1
   
    NSLog(@"%d", NSNotFound); //-1
    NSLog(@"loc = %ld, length = %ld", range.location,range.length);//4 4
   
3.NSPoint
    //NSPoint == CGPoint
//    其定义
    struct CGPoint {
        CGFloat x;
        CGFloat y;
    };
//    手机上的每一个ui元素都拥有自己的坐标,CGPoint就表示坐标,开发中一般使用CGPoint(跨平台)

    //    新建一个CGPoint类型的数据
    CGPoint p1 = NSMakePoint(10, 10);
    NSPoint p2 = CGPointMake(20, 20);//最常用

4.NSSize
//    NSSize == CGSize
//    用来表示UI元素的尺寸
    NSSize s1 = CGSizeMake(100, 60);
    CGSize s2 = NSMakeSize(100, 60);
    NSSize s3 = NSMakeSize(200, 80);  //(宽度, 高度)
   
5.NSRect
//    NSRect == CGRect
新建:
    CGRect rect1 = CGRectMake(0, 0, 199, 22);//(x,y,宽度,高度)
    CGRect rect2 = {{0,0},{100,90}};
    CGRect rect3 = {p1,s2};
   
//    CGPointZero == CGPointMake(0, 0) 常用
    CGRect rect4 = {CGPointZero, CGSizeMake(100, 96)};
   
   
//    //创建一个函数,返回CGRect类型的结构体
//    CGRect myRect(CGFloat x, CGFloat y,CGFloat width, CGFloat height)
//    {
//        CGRect Rect;//新建一个名为Rect的CGRect结构体
//        Rect.origin.x = x;
//        Rect.origen.y = y;
//        Rect.size.width = width;
//        Rect.size.height = height;
//        
//        return Rect;
//    }

6.结构体的调试   
    //1.遍历结构体,此处的点语法不是getter和setter,而是访问结构体的成员
    NSLog(@"x=%f, y=%f, width=%f, height=%f", rect1.origin.x, rect1.origin.y,rect1.size.width,rect1.size.height);  //太麻烦,不用
   
    //2.把整个结构体先转换成字符串,再打印
//    NSString * str = NSStringFromPoint(p1);
//    NSString * str2 = NSStringFromSize(s3);
    NSString * str3 = NSStringFromRect(rect1);

7.结构体常用的函数
    //1.比较两个是否相同
//    CGPointEqualToPoint(CGPointMake(10, 29), CGPointMake(10, 29));
//    CGRectEqualToRect(CGRectMake(<#CGFloat x#>, <#CGFloat y#>, <#CGFloat width#>, <#CGFloat height#>), <#CGRect rect2#>);
//    CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>);
//   
    //2.判断范围内是否包含这个点
    BOOL b2 = CGRectContainsPoint(CGRectMake(10, 89, 100, 20), CGPointMake(90, 90));
    NSLog(@"%d", b2);//打印1
[img=480 ,360]http://img.blog.csdn.net/20140703214209906[/img]

   
    //分析:CGRectMake(10, 89, 100, 20)相当于创建了一个左上顶点(10,89),宽度为100,高度为20的矩形。  判断(90,90)这个点是否在这个矩形上  这是很简单的数学问题,不再赘述。

1 个回复

倒序浏览
嫌格式渣的童鞋可以看我的博客:http://blog.csdn.net/xiao1988y3lo/article/details/36703577
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马