黑马程序员——Foundation中的OC结构体

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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

------Java培训、Android培训、ios培训、.Net培训、期待与您交流!------

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

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航