zoukankan      html  css  js  c++  java
  • 黑马程序员——Foundation中的OC结构体

    <span style="font-size:14px">------<a target="_blank" href="http://www.itheima.com">Java培训、Android培训、ios培训、.Net培训</a>、期待与您交流!------</span>
    

      


    OC结构体

    NSRange

    NSPointCGPoint 

    NSSizeCGSize

    NSRectCGRect

    1.NSRange:字符在字符串中的范围(位置,长度)

    用typedef 定义NSRange结构体类型:

          typedef struct _NSRange {

              NSUInteger location;

              NSUInteger length;

            } NSRange;

      用法举例:

          NSString*str=@"i love you";

          NSRange range1=NSMakeRange(2,4);// 则r表示的即是love的范围

          NSRange range2 = [str rangeOfString:@"love"];        // 定义NSRange结构体类型变量range 并将字符串@“love”的位置和长度保存在range2中。

          NSLog(@"loc = %ld length = %ld", range2.location, range2.length);// 打印出love的位置和长度,结果为loc=2 length=4.

           若查找不到某个字符串的范围length=0,location=NSNotFound==-1。

    2.NSPointCGPoint:确定平面中一个点的坐标

              typedef struct CGPoint {

                 CGFloat x;

                 CGFloat y;

              }CGPoint;

             typedef CGPoint NSPoint;

    用法举例:

            CGPoint p1 = NSMakePoint(10,10);//即点p1的x和y的值都是10.

            NSPoint p2 = CGPointMake(5,6);    //常用这种写法; 点p2.x=5,p2.y=6.

     

    结构体可以转为字符串,方便查看结构体各个属性

             NSString *str = NSStringFromPoint(p1);//将点p1转成字符串保存在str中

             NSLog(@"%@", str);//输入该字符串  {10,10}

     下面两种情况都需要在CoreGraphics框架下运行

           1.比较两个点是否相同

       BOOL a = CGPointEqualToPoint(CGPointMake(10,10), CGPointMake(10,10));

          2.下面表示坐标原点

       CGPointZero等价于CGPointMake(0,0)

        3.NSSizeCGSize 描述一个UI元素的尺寸(宽度,高度)

            struct CGSize {

                CGFloat width;

                CGFloat height;

            };

            typedef struct CGSize CGSize;

            typedef CGSize NSSize;

         用法举例:

            NSSize s1 = NSMakeSize(15,20);

            CGSize s2 = NSMakeSize(45,23);

            NSSize s3 = CGSizeMake(20,20);

     

            NSString *str1 = NSStringFromSize(s1);

            NSLog(@"%@", str1);

     

     比较尺寸是否相同要调用的CGSizeEqualToSize函数也需要在CoreGraphics框架下运行。

            NSSize s1 = NSMakeSize(15,20);

            CGSize s2 = NSMakeSize(45,23);

            BOOL b = CGSizeEqualToSize(s1, s2);

    // 或写成行代码BOOL b =CGSizeEqualToSize(CGSizeMake(15,20),CGSizeMake(45,23));

            NSLog(@"%d",b);

        4.NSRectCGRect :确定一个矩形

            struct CGRect {

                CGPoint origin;

                CGSize size;

            };

            typedef struct CGRect CGRect;

            typedef CGRect NSRect;

         用法举例:CGRect定义变量及初始化的方法有下面几种。

             CGRect r = CGRectMake(2,2,50,12);

             CGRect r1 = CGRectMake(3,2,25,12);

             CGRect r2 = {p1,s1};

             CGRect r3 = {{10,20},{100,50}};

    CGRect r3 = {CGPointZero, CGSizeMake(50,12)};

    同样也可以将这种结构体转为字符串

             NSString *str2 = NSStringFromRect(r);

             NSLog(@"%@", str2);

     比较两个矩形是否相等可以用下面函数实现

             CGRectEqualToRect(r,r1);

    判断一个点是否在矩形内可以用下面函数实现

    BOOL b1=CGRectContainsCGPoint(CGRectMake(50,60,100,90),CGPointMake(90,90));

        

        

  • 相关阅读:
    2.8Java专项测试复盘
    我的第一篇博客
    VS2010调试汇编
    socket学习
    DLL 共享数据学习
    PE学习
    char*,const char*和string的相互转换 + 三种版本字符串
    unresolved external symbol “symbol”(不确定的外部“符号”)。
    深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p
    volatile学习
  • 原文地址:https://www.cnblogs.com/newbee010/p/4351432.html
Copyright © 2011-2022 走看看