Как я могу представить представление перед другим видом в Swift?
Ниже показано, как мои представления организованы в IB, top-> внизу при запуске приложения.
Пользователь может сделать что-то, чтобы "Заголовок представления таблицы категорий" временно развернулся над "Представлением имени" - однако после этого действие .TouchDown, назначенное "Заголовку представления таблицы категорий", больше не работает там, где оно перекрывается с "Представлением имени" ( т.е. пользователь может нажать на заголовок в любом месте, где он не пересекается с представлением имени, и он все еще работает).
![enter image description here]()
Я знаю, что это может сбить с толку, поэтому я достал несколько коробок. Слева - оригинал, справа - после действий пользователя - проблема справа, действие в красном поле работает, только если пользователь касается нижней половины, а не верхней.
![enter image description here]()
Я думаю, это потому, что заголовок ниже в иерархии представления, чем представление имени, но мне было бы трудно изменить это без возни с кучей ограничений.
Я также попытался установить nameView.hidden = true, но это не работает.
Ответы
Ответ 1
Если вы хотите перенести подпредставление на передний план, вы можете использовать:
SWIFT 4 ОБНОВЛЕНИЕ
self.view.bringSubviewToFront(yourView)
SWIFT 3 ОБНОВЛЕНИЕ
self.view.bringSubview(toFront: yourView)
Отправить вид назад: -
SWIFT 4 ОБНОВЛЕНИЕ
self.view.sendSubviewToBack(yourView)
SWIFT 3 ОБНОВЛЕНИЕ
self.view.sendSubview(toBack: yourView)
Ответ 2
Вы можете взять контроль над порядком subviews с помощью методов: bringSubviewToFront и sendSubviewToBack из супервизора.
Вы можете получить доступ ко всем подзонам, содержащимся в супервизии, используя массив self.view.subview.
Ответ 3
В Свифт 5
Вынести подвид на передний план
self.view.bringSubviewToFront(yourView)
Чтобы отправить подписку назад
self.view.sendSubviewToBack(yourView)
Ответ 4
Метод обновлен с момента быстрого 3
Что сработало для меня и, надеюсь, для вас используется:
YourView.bringSubview(toFront: yourelementA)
YourView.bringSubview(toFront: yourelementB)
В качестве альтернативы вы можете использовать следующее для отправки объекта, который находится спереди:
YourView.sendSubview(toBack: yourelementC)
Я надеюсь, что это поможет