OC中常用的结构体有NSRange、(NSPoint、NSSize、NSRect)后面三个由于开发中,为了跨平台的原因。
一般都用CGPoint、CGSize、CGRect代替。所以我们主要介绍和掌握NSRange、CGPoint、CGSize、CGRect
即可。(
在OC中NSPoint、NSSize、NSRect其实是对应CG类型的typedef,也就是说他们是等价的)。
1 #import <Foundation/Foundation.h>
2
3 int main(int argc, const char * argv[]) {
4 /*
5 NSRange {location, length};
6 NSPoint {} \ CGPoint
7 NSSize {} \ CGSize
8 NSRect {} \ CGRect
9
10 NSPoint、NSSize、NSRect都是对应的
11 CGPoint、CGSize、CGRect的typedef
12 所以以上这三个于其对应的都一样。
13 */
14
15 NSRange r1 = {2, 4}; // 不用,表达不清楚
16 NSRange r2 = {.location = 2, .length = 4}; // 不用,太冗余
17
18 // 一般用这个, 因为函数的参数有说明参数的意思。
19 NSRange r3 = NSMakeRange(2, 4);
20 /*
21 NSRange NSMakeRange(NSUInteger loc, NSUInteger len) {
22 NSRange r;
23 r.location = loc;
24 r.length = len;
25 return r;
26 }
27 */
28
29 NSString *str = @"i love oc";
30 // 查找某个字符串在Str中的范围
31 // 如果找不到, length = 0, location = NSNotFound = -1
32 NSRange loveRange = [str rangeOfString:@"love"];
33 NSLog(@"loc = %ld, len = %ld", loveRange.location, loveRange.length);
34
35
36 /*
37 struct CGPoint {
38 CGFloat x; // CGFloat ~~~ double
39 CGFloat y;
40 };
41
42 struct CGSize {
43 CGFloat width; // 宽
44 CGFloat height; // 高
45 };
46
47 struct CGRect {
48 CGPoint origin; // 左上角的点位置
49 CGSize size; // 长、宽
50 };
51 */
52 /*
53 总结:
54 开发中一般都用CGPoint、CGSize、CGRect, 因为这些是跨平台的。
55 创建CG结构体的函数都是结构体函数名开头 + Make
56
57 CGFloat等效于double类型。CGPoint用来表示一个点
58 CGSize用来表示大小的宽高。
59 CGRect是由CGPoint、CGSize组成,表示一个矩形。
60
61 */
62
63 CGRect r = CGRectMake(0, 0, 100, 50); // 前两个构成CGPoint, 后两个构成CGSize
64 /*
65 CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
66 {
67 CGRect rect;
68 rect.origin.x = x;
69 rect.origin.y = y;
70 rect.size.width = width;
71 rect.size.height = height;
72 return rect;
73 }
74
75 */
76
77
78 // 快速返回结构体内部的成员值。
79 /*
80 NSStringFromRange
81 NSStringFromPoint
82 NSStringFromSize
83 NSStringFromRect
84 */
85 NSString *str1 = NSStringFromRect(r);
86 NSLog(@"%@", str1);
87
88 NSString *str2 = NSStringFromRange(r1);
89 NSLog(@"%@", str2);
90 return 0;
91 }
92 /*
93 总结:
94 1.各个结构体的含义
95 NSRange:表示范围(loc, len)。
96 CGPoint:表示二维坐标系的一个点
97 CGSize:表示二维空间的一个大小
98 CGRect:表示二维空间的一个矩形
99
100 2.创建结构体的常用方法:使用函数
101 CG结构体名 + Make
102
103 3.快速打印结构体的方式
104 NSStringFromRange\NSStringFromPoint\NSStringFromSize\NSStirngFromRect
105 都是返回结构体内部的数据成员用字符串拼接起来。
106
107 4.CGFloat的本质:double
108 */