Фон UILabel виден после композита - PullRequest
0 голосов
/ 09 октября 2009

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

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

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

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

1 Ответ

0 голосов
/ 11 октября 2009

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

...