OC中常用的結(jié)構(gòu)體有NSRange、(NSPoint、NSSize、NSRect)后面三個(gè)由于開發(fā)中,為了跨平臺(tái)的原因。
一般都用CGPoint、CGSize、CGRect代替。所以我們主要介紹和掌握NSRange、CGPoint、CGSize、CGRect
即可。(
在OC中NSPoint、NSSize、NSRect其實(shí)是對(duì)應(yīng)CG類型的typedef,也就是說(shuō)他們是等價(jià)的)。
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都是對(duì)應(yīng)的
11 CGPoint、CGSize、CGRect的typedef
12 所以以上這三個(gè)于其對(duì)應(yīng)的都一樣。
13 */
14
15 NSRange r1 = {2, 4}; // 不用,表達(dá)不清楚
16 NSRange r2 = {.location = 2, .length = 4}; // 不用,太冗余
17
18 // 一般用這個(gè), 因?yàn)楹瘮?shù)的參數(shù)有說(shuō)明參數(shù)的意思。
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 // 查找某個(gè)字符串在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; // 左上角的點(diǎn)位置
49 CGSize size; // 長(zhǎng)、寬
50 };
51 */
52 /*
53 總結(jié):
54 開發(fā)中一般都用CGPoint、CGSize、CGRect, 因?yàn)檫@些是跨平臺(tái)的。
55 創(chuàng)建CG結(jié)構(gòu)體的函數(shù)都是結(jié)構(gòu)體函數(shù)名開頭 + Make
56
57 CGFloat等效于double類型。CGPoint用來(lái)表示一個(gè)點(diǎn)
58 CGSize用來(lái)表示大小的寬高。
59 CGRect是由CGPoint、CGSize組成,表示一個(gè)矩形。
60
61 */
62
63 CGRect r = CGRectMake(0, 0, 100, 50); // 前兩個(gè)構(gòu)成CGPoint, 后兩個(gè)構(gòu)成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 // 快速返回結(jié)構(gòu)體內(nèi)部的成員值。
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 總結(jié):
94 1.各個(gè)結(jié)構(gòu)體的含義
95 NSRange:表示范圍(loc, len)。
96 CGPoint:表示二維坐標(biāo)系的一個(gè)點(diǎn)
97 CGSize:表示二維空間的一個(gè)大小
98 CGRect:表示二維空間的一個(gè)矩形
99
100 2.創(chuàng)建結(jié)構(gòu)體的常用方法:使用函數(shù)
101 CG結(jié)構(gòu)體名 + Make
102
103 3.快速打印結(jié)構(gòu)體的方式
104 NSStringFromRange\NSStringFromPoint\NSStringFromSize\NSStirngFromRect
105 都是返回結(jié)構(gòu)體內(nèi)部的數(shù)據(jù)成員用字符串拼接起來(lái)。
106
107 4.CGFloat的本質(zhì):double
108 */