Кварцевый 2D-чертеж RGB в альфа-увядшем UIView

86
12

Я создал пользовательский UIView, который переопределяет метод drawRect с помощью Quartz. В конечном итоге мне удалось заставить все работать точно так, как я хочу, но есть действительно своеобразное поведение, от которого я не могу опустить голову.


Если я использую пользовательский UIView, определенный как = > (@interface TagView: UIView)
с его значением альфа-значение, равным 1, тогда он рисует точно так, как я ожидал бы.


Проблема, с которой я столкнулся, заключается в том, что в одном конкретном случае я хочу, чтобы она рисовала альфа 0.3, поэтому я добавил представление к IB с альфой 0.3. Я рисую несколько артефактов с различными значениями RGB, установленными с использованием CGContextSetRGBStrokeColor и CGContextSetRGBFillColor. Все они работают нормально, пока я не попытаюсь установить ненулевое значение для всех 3 значений RGB.


Чтобы проиллюстрировать, использую ли я:
CGContextSetRGBStrokeColor (контекст, 1, 1, 0, 1);
то я получаю желтую линию.
Если я использую:
CGContextSetRGBStrokeColor (контекст, 1, 1, 0,001, 1);
Я ничего не получаю.


Похоже, что до тех пор, пока я установил одно из значений RGB в 0, он будет счастлив и рисует, но как только все три значения отличны от нуля, он терпит неудачу. Кроме того, все это прекрасно работает, когда альфа представления имеет значение 1.0 (т.е. Я могу рисовать белым без каких-либо проблем).


Есть ли у кого-нибудь какие-либо мысли или предложения относительно того, что может быть причиной этого или как я могу диагностировать проблему?

спросил(а) 2011-01-05T15:40:00+03:00 10 лет, 2 месяца назад
1
Решение
113

Гаррррррр... Кажется, моя мистическая способность задавать вопрос на форуме ТОЛЬКО, чтобы разобраться в себе через 30 секунд, снова ударила! (конечно, это после 2 1/2 дней вытягивания волос...).

Кажется, я случайно оставил цвет фона в виде белого. С 0,3 альфа это на самом деле не было очень очевидно. Белый на белом == Невидимый, поэтому я подозреваю, почему строки не были видны. Я бы подумал, что желтый цвет появился бы, но это, похоже, не так.

ответил(а) 2011-01-05T15:52:00+03:00 10 лет, 2 месяца назад
43

Попробуйте настроить opaque -property вашего пользовательского представления на NO.

ответил(а) 2011-01-05T15:55:00+03:00 10 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема