Как я могу найти superview / parentviewcontroller для представления внутри стека - PullRequest
0 голосов
/ 21 марта 2019

Надеюсь, это не слишком запутанно.

У меня есть контроллер основного вида (MainView) с представлением стека внизу представления и внутри просмотра стека. У меня три представления. Внутри одного представления (давайте назовем это footerView) я добавляю немного tooltipView - и поскольку footerView расположен внутри стека в нижней части MainView - он частично перекрывается с другими представлениями. Я хочу сказать tooltipView, чтобы он был на вершине всех просмотров, но он не работает. Внутри footerView - у него нет superview (я полагаю, потому что это внутри стека), поэтому я не могу использовать parentView.bringSubviewToFront(childView).

Что я мог сделать вместо этого? Является ли делегирование через слои единственным способом?

Ответы [ 2 ]

1 голос
/ 21 марта 2019

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

tooltipView.layer.zPosition = 1

или

tooltipView.layer.zPosition = .greatestFiniteMagnitude

Если установить значение 1, оно превосходит другие представления, для которых по умолчанию задано значение 0, или значение .greatestFiniteMagnitude всегда будет отображаться спереди.

Ознакомьтесь с этим ответом по zPostion и Документация Apple по zPostion .

0 голосов
/ 22 марта 2019

Ответ Томми помог, но еще одна вещь, которая помогла, была то, что я создавал свой tooltipView до того, как footerView закончил настраиваться - следовательно, почему superview был nil. Я переместил инициализацию tooltipView, чтобы она оказалась внутри func layoutSubviews(), и она работает.

Но ТАКЖЕ убедитесь, что вы сняли отметку clip to bounds. Вот почему, что бы я ни делал с zPosition, ничего не изменилось

...