Как иметь родительский UIView Появляется ВЫШЕ это UIImageView sub-view - PullRequest
1 голос
/ 12 апреля 2011

У меня есть класс, который расширяет UIView, и у него есть UIImageView, который добавляется как подпредставление при создании UIView.Я переопределяю метод Draw (он же drawRect) и рисую на текущем CGContext просто отлично, если я не добавляю UIImageView или если я устанавливаю для него Opaque значение false, а для BackgroudColor значение Clear и оставляю для Image значение null (он же nil).Как только я устанавливаю BackgroundColor UIImageView в реальный цвет, или я устанавливаю Image в UIImageView в нечто отличное от нуля, все, что я рисую, рисуется ПОД UIImageView.

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

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

В основном, если мой родительский вид Opaque имеет значение false, а его цвет фона - Clear, я ожидаю, что любые фигуры или линии, которые я рисую в его контексте в его методе рисования, будут отображаться в верхней части любых подпредставлений, которые могут быть.

Как я могу нарисовать в родительском представлении и, показывая ниже, что рисуется в подпредставлении?

Есть ли на сайте Apple какая-либо документация, объясняющая Z-порядок родительского вида и его подвидов??

Примеры в C # или Objective-C хороши.

1 Ответ

3 голосов
/ 12 апреля 2011

Вы видите правильное поведение!В UIKit представление отрисовывается в drawRect, а затем фреймворк обрабатывает рисование всех своих подпредставлений поверх него.

На самом деле нет способа изменить это, поскольку Apple имеет жестко закодированный видпорядок zНо это действительно имеет смысл.Например, если у меня есть фоновое изображение и я хочу добавить к нему человека, я бы сделал [backgroundView addSubview:personView], и я ожидал бы, что представление человека будет нарисовано поверх backgroundView.

Если выхотите нарисовать поверх вашего изображения, сделайте ваш рисунок в другом виде и добавьте его сверху:

[mainView addSubview:myImageView]
[mainView addSubview:myCustomOverlayView]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...