Вызов [view setNeedsDisplay] для представления за другим полупрозрачным представлением не вызывает drawRect :?

У меня два взгляда:

Просмотр A с альфа-каналом 1.0
Просмотр B с альфа-каналом 0,5

Оба являются подпредставлениями, при этом представление B добавлено как подпредставление после представления A, что подразумевает, что непрозрачный вид A частично виден через полупрозрачный вид B.

Когда я вызываю setNeedsDisplay в обоих представлениях, вызывается только drawRect представления B.

Я знаю, что setNeedsDisplay не вызывает сразу drawRect, поэтому я предполагаю, что если бы A был полностью невидимым, это имело бы смысл.

Когда я могу видеть часть представления от A до B, почему drawRect A все еще не вызывается? Может я неправильно понял документацию?


person Sid    schedule 27.09.2012    source источник
comment
что, если вы удалите вид B (чтобы он не заслонял вид A), ваше представление перерисовывается так, как вы думаете?   -  person Jessedc    schedule 27.09.2012
comment
Это всего лишь теория, но убедитесь, что для свойства opaque представления B установлено значение NO. Это отдельное свойство от alpha и используется ОС для оптимизации рисования, например, предотвращения рисования видов внизу.   -  person Xono    schedule 27.09.2012
comment
@Jessedc Да, это так. Когда у меня есть одно представление, оно отображается точно так, как должно ...   -  person Sid    schedule 27.09.2012
comment
@Xono К сожалению, это не сработало :( Хотя действительно хорошее предложение ....   -  person Sid    schedule 27.09.2012


Ответы (1)


Отвечаю на свой вопрос - в этом случае drawRect не вызывается.

person Sid    schedule 28.09.2012