2009-10-09 8 views
0

Я делаю что-то необычное. Я пытаюсь подкрасить все компоненты в приложении красным (возможно, вы видели некоторые другие сообщения от меня об этом, но это нечто более конкретное). Для этого я перехватываю все вызовы drawInContext CALayer: после вызова исходного метода я составлю красный на слой с помощью kCGBlendModeDarken (или kCGBlendModeMultipy). Это работает на удивление хорошо для большинства компонентов пользовательского интерфейса. Однако, когда я делаю это с помощью UILabels, ранее прозрачный фон становится белым (ну, на самом деле, красным тонированным белым). Вы можете увидеть, как это выглядит в этом образе моей панели инструментовФон UILabel, видимый после композита

http://www.thinkastronomy.com/RedLabels.png

Обратите внимание, что UIImages также не тонированные, но это тема другой вопрос.

Так может ли кто-нибудь объяснить, почему фон UILabel станет видимым благодаря этому составу? Похоже, что он практически не зависит от режима компоновки. Как я могу это предотвратить?

ответ

0

Непрозрачный набор NO на этикетках и все прозрачные виды позади них? Недостаточное значение - это причуда в UIViews, которая может вызвать проблемы с прозрачным фоном. Из документов: «ДА, если это непрозрачно, в противном случае -« Нет ». Если непрозрачно, операция рисования предполагает, что представление заполняет его границы и может сделать более эффективно. Результаты непредсказуемы, если непрозрачность, а представление не заполняет ее границы. Если это представление полностью или частично прозрачно, установите для этого свойства значение НЕТ. Значение по умолчанию - YES. "

Смежные вопросы