Enviar programaticamente para elementos frontais / traseiros criados a partir do construtor de interface


84

No construtor de interface, existem opções de layout para enviar para trás ou enviar para a frente todos os elementos, tais como UIButton, UIImage, UILabeletc ...

Agora, eu gostaria de fazer o mesmo em tempo de execução, programaticamente.

Existe uma maneira fácil de fazer isso?

Não quero criar visualizações diferentes, apenas atualizar o eixo z.

Respostas:


192

Existem vários métodos UIViewque permitem modificar a hierarquia da visualização.

Como suas visualizações já estão inseridas em sua supervisão, você pode facilmente chamar bringSubviewToFront:uma vez para cada visualização na ordem que desejar.


Você está dizendo que não posso enviar diretamente um UIButton para frente / trás? Tenho que criar uma visão e adicioná-la a ela. Então use os métodos acima? Em caso afirmativo, a classe do controlador é o lugar para criar tal visão?
Yohann T.

11
Um UIButton é uma subclasse de UIView. Basta chamar: [[myButton superview] bringSubviewToFront: myButton];
Sebastian Celis

Só para tirar uma pequena dúvida que eu tinha: se você inserir uma subvisão que já está na hierarquia de visões, o SO só vai mover sua posição. Portanto, inserir enquanto a visualização existir não causará nenhuma sobrecarga.
olivaresF

"chame bringSubviewToFront:uma vez para cada exibição na ordem que quiser" isso é realmente um truque. Um bom.
Ans

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.