您的位置:首页 > 编程语言 > C语言/C++

黑马程序员-OC语言基础:Foundation框架小结

2015-07-15 21:29 621 查看
------<ahref="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!
-------

Foundation正如其名,是其他所有iOS框架的基础
Foundation框架包含了很多开发中常用的数据类型:结构体、枚举、类
Foundation框架常用的结构体
NsRange
NsPoint\CGPoint
NSSize\CGSzie
NSRect\CGRect
NSRange(范围)
NSRange的定义:
[objc] view
plaincopy
1. typedef struct _NSRange {
2. NSUInteger location;
3. NSUInteger length;
4. } NSRange;
从定义中我们可以看到NSRange有两个参数,locaition表示位置,length表示长度
给NSRange结构体赋值有两种方式:
1:NSRange r1 = {2,3}; //不方便,得看一下定义才能知道是赋值给谁,所以开发中不用这种方式
2: NSRange r2 = {.location = 2, .length= 4}
;// 也不常用,如果参数多的话,一个个写出来太麻烦了

我们经常是用一个Foundation框架自带的一个函数:
NSMakeRange(NSUInteger loc ,NSUInteger len)
这样就很明显,第一个参数是location,第二个参数是length,所以可以直接传参数:
NSMakeRange(2,3);
系统自带的方法中有一个是和范围有关的:rangeOfString:(NSString*) ,返回值是NSRange类型,用法如下:
[objc] view
plaincopy
1. NSString *str = @"I love OC"; // 创建了一个字符串str
2. NSRange range = [str rangeOfString:@"ov"]; //查找字符串"ov"在str中的范围,并把返回值赋给结构体变量range
3. NSLog(@"loc = %ld, length = %ld",range.location,range.length);
4. // 打印结果为:loc = 3,length = 2
注意:如果查找的字符串没有的话,那么length= 0,location =NSNotFound
NSPoint \CGPoint(点)
NSPoint的定义:
[objc] view
plaincopy
1. typedef struct _NSPoint {
2. CGFloat x;
3. CGFloat y;
4. } NSPoint;
NSPoint有两个参数,表示这个点的坐标x,y.点击头文件可看到CGPoint和NSPoint定义是一样的,并且有typedefCGPoint NSPoint;所以CGPoint和NSPoint是一样的,但在开发中一般都是用CGPoint,因为他是跨平台的。
这个结构体的赋值也是用系统自带的函数
一个是:CGPoint p1 = NSMakePoint(10,10); //
因为NSPoint和CGPoint是一样的,所以用NSMakePoint返回的值赋给CGPoint也不会有错
NSPoint p2 = CGPointMake(20,20); //
常用这个
NSSize \CGSize(尺寸)
NSSize的定义
[objc] view
plaincopy
1. typedef struct _NSSize {
2. CGFloat width; //宽度
3. CGFloat height;// 高度
4. } NSSize;

NSSize表示UI元素的尺寸,同样的CGSize也是和NSSize一样,函数名也和之前一样
NSSize s1 = CGSizeMake(100,50);
CGSize s2 = NSMakeSize(100,50);
NSRect \ CGRect
NSRect的定义
[objc] view
plaincopy
1. typedef struct _NSRect {
2. NSPoint origin;
3. NSSize size;
4. } NSRect;
它有两个属性,一个是点,一个是尺寸.CGRect创建方法的函数如下:
CGRect r1 = CGRectMake(0,0,100,50);
如果想看结构体中的所有成员,那么第一种方法,挨个拿出来看
[objc] view
plaincopy
1. NSLog(@"x=%f,y=%f,with=%f,height=%f",r1.origin.x,r1.origin.y,r1.size.width,r1.size.height);
第二种方法:先把整个结构体转为字符串,然后再打印。
把结构体转成字符串的方法
[objc] view
plaincopy
1. NSString *str1 = NSStringFormPoint(p1);
2. NSString *str2 = NSStringFormSize(s2);
3. NSString *str3 = NSStringFormRect(r1);
另外一种把CGrect转成字符串的方法:
CGRect r2 = {{0,0},{100,90}};
CGRect r3 = {p1,s2};
CGPointMake (0,0)==CGPointZero;//表示原点
所以如果点是原点的话,那么就可以这样来表示了:CGRectr2 = {CGPointZero,{100,90}};
同样的,有CGSizeZero,CGRectZero;
结构体常用函数:
BOOL b =CGPointEqaulToPoint(CGPoint(10,10),CGPoint(10,10));//比较两个点是否相同
同样的有:BOOL b2 =CGSizeEqualToSize(CGSize(100,50),CGSize(80,30));
CGRect 的函数:
CGRectContainsPoint(CGRect rect,CGPoint point);判断点是否在Rect范围内
如:BOOL b3 =CGRectContainsPoint({{40,40},{100,50}},{70,80}}); //点(70,80)在(140,90)范围内,所以包含,返回1
注意:使用这些函数的前提是添加CoreGraphics框架
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: