Foundation——常用结构体 (NSRange 、NSPoint、NSsize、NSRect)

来源:互联网 发布:在线音乐剪辑合成软件 编辑:程序博客网 时间:2024/05/16 01:54

Oc为我们提供了四个结构体,定义的变量可以存在栈上和堆上。

分别是:范围:NSRange ,  几体数据类型 : 点(NSPoint) 尺寸(NSsize) 区域(NSRect);


----------------------------------------------------------------------------------------------------------------------------------------------------------------------

<一> NSRange:   用来表示相关事物的范围。



 结构体原形:typedefstruct _NSRange

        {

           NSUInteger location;

           NSUInteger length;

        }NSRange;


NSRange:(用于存储单词或语句,在里面的位置)
location:起始位置,
length:元素个数。
NSRange,是结构体,不是类,定义的变量不需要加*

三种赋值方式:

       NSRange range;

        //c语言结构体变量的赋值的方法

        range.location=17;

        range.length=4;

        NSLog(@"%lu %lu",range.location, range.length);


        //c语言结构体变量初始化的方法

      NSRange range1={17,4};

       NSLog(@"%lu %lu",range1.location, range1.length);



        //oc的赋值方法 //最常用

        range=NSMakeRange(17,4);

        NSLog(@"%lu %lu",range1.location, range1.length);


cocoa提供的一个快捷函数NSMakeRange();

使用NSMakeRange()的好处是可以在任何能够使用函数的地方使用它,例如在方法调用中将其当成参数传递。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

<二>NSPoint 代带平面上的点

结构体原形:

typedefstruct  _NSPoint

        {

           float x;

           float y;

        }NSPoint;


三种赋值方式:

        NSPoint point;

        point.x=10;

        point.y=20;

       NSLog(@"%f,%f",point.x,point.y);

        

      NSPoint point1={10.3,20.6};

      NSLog(@"%f,%f",point1.x,point1.y);

        

       point=NSMakePoint(10.5,11.3);

       NSLog(@"%f,%f",point.x,point.y);
注:x,y是值是float类型的。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

<三>   NSSize 用来存储长度和宽度。尺寸。


结构体原形:

typedef struct _NSSize

        {

           float width;

           float height;

        }NSSize;



三种赋值方式:

        NSSize size;

        size.width=15;

        size.height=20;

       NSLog(@"%f %f",size.width,size.height);

        

       NSSize size1={15,20};

       NSLog(@"%f %f",size1.width,size1.height);

        

        size=NSMakeSize(20,30);

       NSLog(@"%f %f",size.width,size.height);



--------------------------------------------------------------------------------------------------------------

<四>   NSRect 用来表示区域。

结构体原形:

typedef struct _NSRect

        {

           NSPoint origin;

           NSSize  size;

        }NSRect;


三种赋值方式:

NSRect rect;

        rect.origin.x=15;

        rect.origin.y=20;

        rect.size.width=8;

        rect.size.height=15;

        

       NSRect rect1={15,20,8,15};

        

        rect =NSMakeRect(15,20,15,20);


         NSSize size=NSMakeSize(50,60);

       NSLog(@"%f  %f ",size.width,size.height);

       NSRect rect=NSMakeRect(5.3,4.6,20.5, 40.5);

       NSLog(@"%f  %f  %f  %f",rect.origin.x,rect.origin.y,rect.size.width,rect.size.height);




#import <Foundation/Foundation.h>


int main(int argc,const char * argv[])

{


    @autoreleasepool {

        

       NSRange range=NSMakeRange(50,60);

       NSString *rangeString=NSStringFromRange(range);

       NSLog(@"%@",rangeString);

        

        //NSPoint/CGPoing是一样的

       NSPoint point=NSMakePoint(0,0);

        //CGPoint dd=CGPointMake(0, 0);

       NSString *pointString=NSStringFromPoint(point);

       NSLog(@"%@",pointString);

        

        //CGSize/NSSize是一样的

       CGSize size=CGSizeMake(300,200);

        //NSSize size1=NSMakeSize(300, 200);

       NSString *sizeString=NSStringFromSize(size);

       NSLog(@"%@",sizeString);

        

        //CGRect/NSRect是一样的

       CGRect rect=CGRectMake(0,0,80, 90);

        //NSRect rect1=NSMakeRect(0, 0, 50, 60);

       NSString *rectString=NSStringFromRect(rect);

       NSLog(@"%@",rectString);

        

       //表示的都是零

        CGPointZero;

        CGSizeZero;

        CGRectZero;

       //判断是否相等

        //使用这些函数的前提是添加CoreGraphics框架

       BOOL b=CGRectEqualToRect(CGRectMake(0,0, 80,80), CGRectMake(0,0, 80,80));

       CGSizeEqualToSize(<#CGSize size1#>, <#CGSize size2#>);

       CGPointEqualToPoint(<#CGPoint point1#>, <#CGPoint point2#>);

       //判断左边是否包含右边的

        CGRectContainsPoint(CGRectMake(50,40, 100, 50),CGPointMake(60,45));

    

        

    

    

    

    

    

    

    }

   return 0;

}