一、NSRange
1.1 NSRange本质是结构体,里面有location和length两个成员。
1.2 NSRange表示元素在数组中的范围,location表示起始元素的下标,length表示要包含的元素个数。
1.3 NSMakeRange函数可以用于创建NSRange对象。如:
NSRange r1 =NSMakeRange(2,4);
1.4 查找某个字符串在str中的范围,可以使用字符串的对象方法rangeOfString来获得。如:
NSRange range=[str rangeOfString:@"java"];
1.5 如果使用rangeOfString找不到元素,则length的值是0,location的值是NSNotFound,NSNotFound转换成无符号整型是-1。
#import <Foundation/Foundation.h>
int main() {
NSRange r1={2,4}; // 不用
NSRange r2={.location=2,.length=4}; // 不用
NSRange r3=NSMakeRange(2,4); // 掌握
NSString *str = @"I love oc";
// 字符串的对象方法rangeOfString用于查找某个字符串在str中的范围
// 如果找不到,lenght=0,location=NSNotFound==-1
NSRange range=[str rangeOfString:@"love"];
NSLog(@"loc=%ld,length=%ld",range.location,range.length); // loc=2,length=4
//NSLog(@"%d",NSNotFound); //值:-1
return 0;
}
二、CGPoint\NSPoint
2.1 CGPoint\NSPoint本质是个结构体,一般用于表示点元素的坐标位置。CGPoint比较常用,因为CGPoint可以跨平台。
2.2 可以使用NSMakePoint和CGPointMake方法创建CGPoint和NSPoint对象。开发中CGPointMake比较常用。如:
CGPoint p1 = NSMakePoint(10,10);
NSPoint p2 = CGPointMake(20,20); // 最常用
2.3 比较两个点是否相同(x、y)
Bool b = CGPointEqualToPoint(CGPointMake(10,10),CGPointMake(10,10));
三、CGSize\NSSize
3.1 CGSize和NSSize表示一个UI元素的尺寸。
3.2 可以使用CGSizeMake和NSMakeSize方法创建CGSize和NSSize对象。如:
NSSize s1 = CGSizeMake(100,50);
CGSize s2 = NSMakeSize(100,50);
3.3 比较两个Size是否相同
CGSizeEqualToSize(CGSize size1,CGSize size2);
四、CGRect\NSRect
4.1 CGRect和NSRect表示一个UI元素的位置和尺寸。
4.2 可以通过CGRectMake和NSMakeRect方法创建CGRect和NSRect对象。如:
CGRect r1 = CGRectMake(0,0,100,50);
4.3 通过结构体成员变量打印CGRect的成员值
CGRect r1 = CGRectMake(0,0,150,100);
NSLog(@"x = %f,y = %f,width = %f, height = %f",r1.origin.x,r1.origin.y,r1.size.width,r1.size.height);
4.4 创建CGRect对象的其它方式
CGRect r2 = {{0,0},{100,90}};
CGRect r3 = {p1,s2};
4.5 比较两个Rect是否相同
CGRectEqualToRect(CGRect rect1,CGRect rect2);
4.6 判断CGRect中是否包含CGPoint
CGRectContainsPoint(CGRect rect,CGPoint point);// 这个方法包含在CoreGraphics framework中
五、将结构体转换为字符串
NSString *str = NSStringFromPoint(p1);// 将Point对象转换为字符串 {10,10}
NSString *str2 = NSStringFromSize(s1);// 将Size对象转换为字符串 {100,50}
NSString *str3 = NSStringFromRect(r1);// 将Rect对象转换为字符串 {{0,0},{150,100}}
六、原点的表示
原点可以使用CGPointZero,相当于CGPointMake(0,0);同理,也有CGSizeZero,CGRectZero,如:
CGRect r4 = {CGPointZero,CGSizeMake(100,90)};