Как я могу привести вид перед другим видом, в Swift?

Ниже показано, как организованы мои представления в IB, сверху вниз при запуске приложения.

Пользователь может сделать что-то, чтобы «Заголовок представления таблицы категорий» временно развернулся над «Представлением имени» - однако после этого действие .TouchDown, назначенное «Заголовку представления таблицы категорий», больше не работает там, где оно перекрывается с «Представлением имени» ( т. е. пользователь может нажать на заголовок в любом месте, где он не пересекается с представлением имени, и он все еще работает).

Я знаю, что это может сбить с толку, поэтому я достал несколько коробок. Слева - оригинал, справа - после действий пользователя - проблема справа, действие в красном поле работает, только если пользователь касается нижней половины, а не верхней.

Я думаю, это потому, что заголовок ниже в иерархии представления, чем представление имени, но мне было бы трудно изменить это без возни с кучей ограничений.

Я также попытался установить nameView.hidden = true, но это не работает.

 vk201506 авг. 2016 г., 00:05
Привет, Фоникс - спасибо за предложение, но это, кажется, только заставляет представление «появляться» перед тем, которое находится под ним в иерархии представлений. Действия, связанные с этим представлением, отсутствуют. Другими словами, я все еще сталкиваюсь с проблемой, с которой сталкиваются поля, которые я нарисовал в своем первоначальном вопросе - действие не работает в «области перекрытия».
 vk201506 авг. 2016 г., 02:22
Я думаю, я понял это - вы не можете переместить ребенка представления перед родным братом того же самого представления. Я исправил это, «улучшив» дочерний вид представления, чтобы быть его родным братом, затем переместив его вперед.
 Fonix05 авг. 2016 г., 05:46
он не должен связываться с вашими ограничениями, перемещая его в иерархии представления, пока он остается на том же уровне, поместите вашName View ниже вашегоChoose Quote View (не в этом) и должно работать

Ответы на вопрос(4)

используя методы: acceptSubviewToFront и sendSubviewToBack из суперпредставления.

Вы можете получить доступ ко всем подпредставлениям, содержащимся в суперпредставлении, используя массив self.view.subview.

 vk201506 авг. 2016 г., 00:24
Спасибо, Тоша - у меня это не сработало - действия, связанные с представлением, перемещенным вперед, также не «перемещаются вперед». Другими словами, я все еще сталкиваюсь с проблемой, с которой сталкиваются ящики, в которых я нарисовал Мой оригинальный вопрос - действие не работает в «области перекрытия». Возможно, название этого вопроса вводит в заблуждение, поскольку предполагает, что решение включает в себя изменение порядка, когда на самом деле существует другое решение.
 tosha06 авг. 2016 г., 07:31
Понимаю. Пожалуйста, сначала скажите мне - как вы фактически связали действие с видом (кнопка или жест касания ..,) ??
 vk201506 авг. 2016 г., 13:56
Привет, Тоша. Думаю, я понял это, как упомянуто в моем комментарии выше. Мне нужно было улучшить мой взгляд от ребенка до родного брата.

Метод был обновлён с 3-го года

То, что сработало для меня и, надеюсь, для вас, использует:

YourView.bringSubview(toFront: yourelementA)
YourView.bringSubview(toFront: yourelementB)

В качестве альтернативы вы можете использовать следующее для отправки объекта, который находится спереди:

YourView.sendSubview(toBack: yourelementC)

надеюсь, это поможет

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

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)
 ssowri103 авг. 2018 г., 11:56
Спасибо! Это помогло мне.
 vk201506 авг. 2016 г., 00:24
Это не сработало для меня - действия, связанные с представлением, перемещенным вперед, также не «перемещаются вперед». Другими словами, я все еще сталкиваюсь с проблемой, с которой сталкиваются коробки, которые я нарисовал в своем первоначальном вопросе - действие не работает в «области перекрытия». Возможно, название этого вопроса вводит в заблуждение, поскольку предполагает, что решение включает в себя изменение порядка, когда на самом деле существует другое решение.

Swift 4.2

ынести подвид на передний план

self.view.bringSubviewToFront(yourView)

Чтобы отправить подписку назад

self.view.sendSubviewToBack(yourView)

Ваш ответ на вопрос