------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
一.NSRange
1成员组成:
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
1>成员类型说明: typedef unsigned long NSUInteger;
2.NSRange类型的结构体用于表示范围。
程序示例 1:
int main(int argc, const char * argv[])
{
// 表示@"i love you"字符串中love的范围
NSRange range = {2, 4}; // 在实际开发中不用这种方式,可读性差。
NSRange range1 = {.location = 2, .length = 4}; // 不够精简,冗余。
//常用的方法是使用Foundation框架自带函数
NSRange range2 = NSMakeRange(2,4);
return 0;
}
3.常用方法和函数
1>使用rangeOfString:方法获取字符串中字串的范围。
程序示例 2:
// 创建一个字符串
NSString *str = @"i love you";
// 获取字符串中@"love"子串的范围
NSRange range = [str rangeOfString:@"love"];
2>注意:
1)rangeOfString:方法执行过程中如果子字串不存在,返回的range.length=0、range.location=NSNotFound。NSNotFound是一个枚举常量值为-1。(NSNotFound是按无符号long类型整数保存的,所以打印的话值会非常大,如果按有符号整数打印是-1)
3>打印结构体:
<span style="font-size:18px;"> // 打印一个结构体,也就是打印他的成员。
// 开发中,是先将结构体转换成字符串,然后再打印
NSRange range = NSMakeRange(0, 2);
NSString *str1 = NSStringFromRange(range);
NSLog(@"%@", str1);</span>
二.NSPoint和CGPoint
1.成员组成:
struct CGPoint {
CGFloat x;
CGFloat y;
};
typedef CGPoint NSPoint;
1>成语类型说明 : typedef CGFLOAT_TYPE CGFloat; CGFLOAT_TYPE是double
2.这两个类表示一个点的坐标,NSPoint与CGPoint等价。在开发中常用到CGPoint。
程序示例 3:
// 表示一个点的坐标
CGPoint p1 = NSMakePoint(10,10);
CGPoint p2 = CGPointMake(10,10); // 开发中常用这个函数。
3.常用方法和函数
1>打印结构体
// 打印一个结构体,也就是打印他的成员。
// 开发中,是先将结构体转换成字符串,然后再打印
CGPoint point = CGPointMake(10, 10);
NSString *str2 = NSStringFromPoint(point);
NSLog(@"%@", str2);
2>比较两个点是否相同(x值、y值是否相等):bool CGPointEqualToPoint (CGPoint point1, CGPoint point2);
三.NSSize和CGSize
1.成员组成:
struct CGSize {
CGFloat width;
CGFloat height;
};
typedef struct CGSize CGSize;
typedef CGSize NSSize;
1>成员类型说明: typedef CGFLOAT_TYPE CGFloat; CGFLOAT_TYPE是double
2.这两个类在开发中常用作表示一个UI元素的尺寸。NSSize和CGSize等价。常用CGSize。
程序示例 4:
// 表示一个UI元素的尺寸
CGSize s = NSMakeSize(10,10);
NSSize s1 = CGSizeMake(20,15);
CGSize s3 = CGSizeMake(10, 10); //常用这种方式
3.常用方法和函数
1>打印结构体
// 打印一个结构体,也就是打印他的成员。
// 开发中,是先将结构体转换成字符串,然后再打印
CGSize size = CGSizeMake(20, 20);
NSString *str3 = NSStringFromSize(size);
NSLog(@"%@", str3);
2>比较两个尺寸是否相同:bool CGSizeEqualToSize (CGSize size1, CGSize size2);
四.NSRect和CGRect
1.成员组成:
struct CGRect {
CGPoint origin;
CGSize size;
};
typedef struct CGRect CGRect;
typedef CGRect NSRect;
2.这两个类在开发中用于表示一个UI元素的位置及尺寸,CGRect和NSRect等价。常用CGRect
程序示例 5:
// 定义一个CGRect\NSRect
CGRect r = CGRectMake(10, 15, 10, 10);
CGRect r1 = NSMakeRect(10, 20,4,5);
CGRect r2 = {{0,0}, {20,10}};
CGPoint p1 = NSMakePoint(10,10);
CGSize s = NSMakeSize(10,10);
CGRect r3 = {p1 , s};
3.常用方法和函数
1>打印结构体
// 打印一个结构体,也就是打印他的成员。
// 开发中,是先将结构体转换成字符串,然后再打印
NSRect rect = CGRectMake(0, 0, 2, 2);
NSString *str4 = NSStringFromRect(rect);
NSLog(@"%@", str4);
2>比较两个CGRect是否相同:bool CGRectEqualToRect (CGRect rect1, CGRect rect2);
3>判断1个CGRect内是否包含某个点: CGRectContainsPoint(CGRect rect, CGPoint point)