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


84

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

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

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

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

Ответы:


192

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

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


Вы хотите сказать, что я не могу напрямую отправить UIButton на передний / задний план? Мне нужно создать представление и добавить его к этому представлению. Тогда воспользуйтесь описанными выше методами? Если да, то подходит ли класс контроллера для создания такого представления?
Yohann T.

11
UIButton - это подкласс UIView. Просто вызовите: [[myButton superview] giveSubviewToFront: myButton];
Себастьян Селис

Просто чтобы развеять небольшое сомнение, которое у меня было: если вы вставите подпредставление, которое уже находится в иерархии представлений, ОС только переместит свою позицию. Таким образом, вставка, пока существует представление, не вызовет никаких накладных расходов.
olivaresF

"вызывать bringSubviewToFront:один раз для каждого просмотра в любом порядке" - вот настоящая уловка. Хороший.
Ans

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.