2012-08-07 15 views
6

I widać tego rozwiązania do stosowania CGRectMake() w celu inicjalizacji CGRect zmiennej:CGRectMake alternatywny

CGRect ramy = (CGRect {0,0,10,10)};

Moje pytanie brzmi: jak działa CGRect frame = (CGRect){0,0,10,10};? Co dzieje się za kulisami? Wygląda na to, że inicjowana jest tablica w stylu c ({x,y,w,h}), która jest następnie rzutowana jako struktura CGRect - czy to prawda? Jeśli tak, to w jaki sposób można rzucić tablicę w stylu c jako strukturę?

N.B. Nie pytam, czy właściwe jest użycie powyższej alternatywy dla CGRectMake(), chcę tylko zrozumieć, dlaczego/jak to działa.

+0

To po prostu działa, jeśli oba oświadczenia utworzyć taką samą sekwencję bajtów. Jednak jestem zdezorientowany, że używasz 0 i 10 zamiast 0.0 i 10.0. 0 i 10 będą kompilowane jako stałe całkowite, a 0.0 i 10.0 będą wyprowadzane jako zmienne/podwójne stałe. Dlatego wątpię, czy można użyć pływaka jako ramy prawnej dla czegoś pożytecznego. CGRect to struktura wykonana z CGPoint i CGSize. Oba składają się z dwóch elementów CGFload (x i y w przypadku CGPoint oraz width i height w przypadku CGSize). –

Odpowiedz

1

U można używać tak:

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

Sprawdź to:

CGPoint origin = {10, 20}; 
CGSize size = {100, 200}; 
CGRect rect = {origin, size}; 
Powiązane problemy