2011-07-30 19 views
6

muszę zrobić coś złego, ale nie wiem co ..UIView setFrame problemem

próbuję dodać podrzędny z tym kodem:

subMenuView = [[UISubMenuViewMainController alloc] init]; 

[subMenuView.view setFrame:CGRectMake(10,0,990,100)]; 

subMenuView.view.backgroundColor = [UIColor whiteColor]; 

[self.view addSubview:subMenuView.view]; 

chcę moim zdaniem być na (10,0) i mają 990/100 w szerokość/wysokość

ale ja dont dostać oczekiwanego rezultatu

Pozwól mi gdybym mylę, Jeśli chcę 10x10 kwadratowy widok na centrum muszę dodać następujący wiersz:

[subMenuView.view setFrame:CGRectMake(512,384,10,10)]; 

To nie jest to, co otrzymuję, pozycja jest prawidłowa, ale szerokość/wysokość są błędne, jakieś pomysły?

+0

http://stackoverflow.com/questions/18850871/cgrectmake-jest-not-working-with-uiview –

Odpowiedz

7

problemu ustalona przez ustawienie

self.view.autoresizesSubviews = NO; 
0

Kod jest trochę niekonwencjonalny, ale zaryzykuję przypuszczenie, że to dlatego, że ustawiasz ramkę widoku, zanim dodasz ją jako wyekspozycję. W związku z tym pozycja subview prawdopodobnie zostanie zmieniona przez layoutSubviews, zanim ją zobaczysz.

Więc spróbuj umieścić drugi wiersz kodu jako ostatni i sprawdź, czy to wystarczy.

+0

Dostaję dokładnie ten sam problem z setFrame i końcem fragmentu kodu –

+0

Nie poddam się, ponieważ dodaję wiele innych kontroli (UIButton) z tą metodą przed i wszystko działa idealnie. –

-1

spróbuj pływaki zamiast wskazówki:

[subMenuView.view setFrame:CGRectMake(10,0,990,100)]; 

do:

[subMenuView.view setFrame:CGRectMake(10.0f,0.0f,990.0f,100.0f)]; 
+2

sam problem, myślę, że GCC może obsłużyć moje int, aby unosić się w czasie kompilacji bez żadnego problemu –

10

jeśli używasz autoLayout The setFrame wezwanie nie mają zastosowania, spróbuj zadzwonić setTranslatesAutoresizingMaskIntoConstraints before setFrame

+4

ustawione na TAK lub NIE? Lepiej podać przykład: – Raptor

+2

Powinieneś wspomnieć o tym, co powinno być ustawione. – ge0rges

+3

Ustawienie dla YES działało dla mnie. – Nerrolken