2009-08-17 23 views
15

Jeśli potrzebuję zmienić rozmiar lub zmienić położenie UIView, czy istnieje lepszy sposób na zrobienie tego niż następujące?Zmienianie rozmiaru UIViews

view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height - 100); 

Lub innymi słowy, czy istnieje sposób, aby po prostu powiedzieć view.frame.size.height - = 100 poprzez właściwość nie tylko do odczytu?

Odpowiedz

25

Jeśli chcesz efekt -=100, po prostu zrobić:

CGRect frame = view.frame; 
frame.size.height -= 100; 
view.frame = frame; 

Wtedy możesz być pewny, że się zmieniamy dokładnie, co chcesz zmienić, zbyt ..

Poza tym, ja don Myślę, że jest sposób ..

10

Nie ma właściwości do bezpośredniego manipulowania wysokością.

Należy pamiętać, że za każdym razem dzwonić view.frame go wywołuje metodę, dzięki czemu kod jest equivilent do:

view.frame = CGRectMake([view frame].origin.x, [view frame].origin.y, [view frame].size.width, [view frame].size.height - 100); 

Rozważmy zamiast regulacji ramkę w osobnej zmiennej:

CGRect frame = view.frame; 
frame.size.height -= 100; 
view.frame = frame; 
+1

Jest to znacznie lepsza odpowiedź niż ta aktualnie oznaczona jako poprawna. – hatfinch

+9

Nie mówię tak naprawdę, to ma trochę więcej szczegółów, ale Aviad ma ikonę chłodniejszą. –

Powiązane problemy