2010-12-10 12 views
10

Spędziłem kilka godzin próbując ustawić UIView i ostatecznie zorientowałem się, że muszę zmodyfikować ramkę widoków. Więc dodałem „setPosition” metodę podklasy UIViewController jak tenJak pozycjonować UIView?

- (void) setPosition:(CGPoint)position 
{ 

    CGRect newFrame = self.view.frame; 
    newFrame.origin.x = position.x; 
    newFrame.origin.y = position.y; 
    self.view.frame = newFrame; 

} 

jednak, że wydaje się tak proste, że nie rozumiem, dlaczego UIViews nie mają już tej metody, która kojarzy mi się to może nie być właściwą drogą do tego. Więc to jest moje pytanie ...

Czy ta metoda jest dobra, czy też robię coś, czego nie powinienem robić ... z jakiegoś powodu?

Odpowiedz

12

Kopiowanie, modyfikowanie i ustawianie ramki ponownie, tak jak tutaj zostało zrobione, to sposób, w jaki to się robi. Może to być również realizowane poprzez stworzenie rect i ustawienie go bezpośrednio:

UIView.frame = CGRectMake(50,50,50,50);//x,y,w,h

Robi to w bloku animacji będzie animować te zmiany.

Alternitively można ustawić ciami punkt środkowy z:

UIView.center = CGPointMake(50,50);

+0

Jeśli masz odniesienia do IBOutlets, ale chcesz umieścić element, który można utworzyć programowo, tworzę UIView (myFrame) do użycia jako frame, a następnie MyCustomView.frame = [myFrame bounds], i dodam MyCustomView do kontenera widoku głównego – jay

2

inny sposób:

CGPoint position = CGPointMake(100,30); 
[self setFrame:(CGRect){.origin = position,.size = self.frame.size}]; 

Ten zapisać parametry wielkości i zmienić tylko pochodzenie.