2012-08-07 74 views
6

我已經看到這種替代,以便用CGRectMake()初始化一個CGRect變量:CGRectMake替代

的CGRect幀=(的CGRect){0,0,10,10};

我的問題是,CGRect frame = (CGRect){0,0,10,10};是如何工作的?幕後發生了什麼?它看起來像一個C風格的數組正在被初始化({x,y,w,h}),然後被鑄造爲一個CGRect結構 - 這是正確的嗎?如果是這樣,如何將一個c樣式數組作爲一個結構體?

N.B.我不是問使用CGRectMake()的上述替代方法是否合適,我只想了解它爲什麼/如何工作。

+0

如果兩個語句創建字節的相同順序它只是工作。 但是,我很困惑,你正在使用0和10而不是0.0和10.0。 0和10將被編譯爲整數常量,0.0和10.0會出現在als float/double常量中。因此,我懷疑你可以使用float作爲合法框架來使用任何有用的東西。 CGRect是由CGPoint和CGSize組成的結構。它們都由兩個CGFload成員組成(在CGPoint的情況下爲x和y,在CGSize的情況下爲寬度和高度)。 – 2012-08-07 08:54:20

回答

1

U可以使用這樣的:

CGRect rect = CGRectFromString(@"{{0, 0}, {612, 892}}"); // it contents { CGPoint origin;CGSize size;}; 
NSLog(@"rect : %@",NSStringFromCGRect(rect)); 
1

檢查:

CGPoint origin = {10, 20}; 
CGSize size = {100, 200}; 
CGRect rect = {origin, size};