黑馬程式員——Foundation中的OC結構體,foundationoc

來源:互聯網
上載者:User

黑馬程式員——Foundation中的OC結構體,foundationoc

 


OC結構體

NSRange

NSPoint\CGPoint 

NSSize\CGSize

NSRect\CGRect

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.NSPoint\CGPoint:確定平面中一個點的座標

          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.NSSize\CGSize 描述一個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.NSRect\CGRect :確定一個矩形

        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));

 

 

    

 

    

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.