Программно отправлять на передние / задние элементы, созданные с помощью конструктора интерфейсов

84

В конструкторе интерфейсов есть параметры макета для отправки на задний план или отправки на передний план любых элементов, таких как UIButton, UIImageи UILabelт. Д.

Теперь я хотел бы сделать то же самое во время выполнения программно.

Есть простой способ сделать это?

Я не хочу создавать разные виды, просто обновите ось z.

Йоханн Т.
источник

Ответы:

192

Существует ряд методов UIView, позволяющих изменять иерархию представлений.

Поскольку ваши представления уже вставлены в супервизор, вы можете легко вызвать bringSubviewToFront:один раз для каждого представления в любом порядке.

Себастьян Селис
источник
Вы хотите сказать, что я не могу напрямую отправить UIButton на передний / задний план? Мне нужно создать представление и добавить его к этому представлению. Тогда воспользуйтесь описанными выше методами? Если да, то подходит ли класс контроллера для создания такого представления?
Yohann T.
11
UIButton - это подкласс UIView. Просто вызовите: [[myButton superview] giveSubviewToFront: myButton];
Себастьян Селис
Просто чтобы развеять небольшое сомнение, которое у меня было: если вы вставите подпредставление, которое уже находится в иерархии представлений, ОС только переместит свою позицию. Таким образом, вставка, пока существует представление, не вызовет никаких накладных расходов.
olivaresF
"вызывать bringSubviewToFront:один раз для каждого просмотра в любом порядке" - вот настоящая уловка. Хороший.
Ans
43

Вы можете использовать:

[self.view bringSubviewToFront:myButton];
hanumanDev
источник