Programowo wysyłaj do elementów z przodu / z tyłu utworzonych z konstruktora interfejsu

84

W interfejsie konstruktora, istnieją opcje układu wysłać do tyłu lub do przodu wysyłać żadnych elementów, takich jak UIButton, UIImage, UILabelitp ...

Teraz chciałbym zrobić to samo w czasie wykonywania, programowo.

Czy jest na to łatwy sposób?

Nie chcę tworzyć różnych widoków, po prostu zaktualizuj oś z.

Yohann T.
źródło

Odpowiedzi:

192

Istnieje wiele metod UIViewumożliwiających modyfikowanie hierarchii widoków.

Ponieważ Twoje widoki są już wstawione do Twojego nadzoru, możesz z łatwością wywołać bringSubviewToFront:jeden raz dla każdego widoku w dowolnej kolejności.

Sebastian Celis
źródło
Czy mówisz, że nie mogę bezpośrednio wysłać UIButton do przodu / do tyłu? Muszę utworzyć widok i dodać go do tego widoku. Następnie użyj powyższych metod? Jeśli tak, to czy klasa kontrolera jest miejscem do tworzenia takiego widoku?
Yohann T.
11
UIButton jest podklasą UIView. Wystarczy zadzwonić: [[myButton superview] bringSubviewToFront: myButton];
Sebastian Celis
Aby wyjaśnić małą wątpliwość, którą miałem: jeśli wstawisz widok podrzędny, który jest już w hierarchii widoków, system operacyjny zmieni tylko swoją pozycję. Tak więc wstawianie tak długo, jak istnieje widok, nie spowoduje żadnego narzutu.
olivaresF
„zadzwoń bringSubviewToFront:raz dla każdego wyświetlenia w dowolnej kolejności” to naprawdę sztuczka. Dobry.
Ans
43

Możesz użyć:

[self.view bringSubviewToFront:myButton];
hanumanDev
źródło