6

変数CGRectMake()を初期化するために使用する代わりに、次の方法を見てきました。CGRect

CGRect フレーム = (CGRect){0,0,10,10};

私の質問は、どのように機能しCGRect frame = (CGRect){0,0,10,10};ますか? 舞台裏で何が起こっているのですか?C スタイルの配列が初期化されている ( {x,y,w,h}) ように見えますが、これは構造体としてキャストされていCGRectます。これは正しいですか? もしそうなら、ac スタイル配列を構造体としてキャストするにはどうすればよいですか?

注: 上記の代替手段を の代わりに使用することが適切かどうかは尋ねていませんCGRectMake()。なぜ/どのように機能するかを理解したいだけです。

4

3 に答える 3

8

いわゆる複合リテラルです。それらの詳細については、Mike Ash による記事 ( Friday Q&A 2011-02-18: Compound Literals)を参照してください。

于 2012-08-07T09:03:48.480 に答える
1

これをチェックして:

CGPoint origin = {10, 20};
CGSize size = {100, 200};
CGRect rect = {origin, size};
于 2013-09-09T09:17:27.047 に答える
1

Uは次のように使用できます:

CGRect rect = CGRectFromString(@"{{0, 0}, {612, 892}}"); // it contents { CGPoint origin;CGSize size;};
NSLog(@"rect : %@",NSStringFromCGRect(rect));
于 2012-08-07T09:01:04.067 に答える