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.

Yohann T.
fonte

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.

Sebastian celis
fonte
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
43

Você pode usar:

[self.view bringSubviewToFront:myButton];
HanumanDev
fonte