(iphone) Я получаю черный прямоугольник позади изображения, почему? - PullRequest
0 голосов
/ 18 февраля 2011

У меня есть экземпляр подкласса UIImageView, который имеет несколько подслоев изображений.

Я хочу динамически добавлять / удалять тени для этого вида.

Следующий код прекрасно работает (реализация подкласса imageView) для imageView с одним подуровнем, но показывает черный прямоугольник вместо тени для imageView с несколькими подуровнями.

(фактически, для одного слоя изображение, кажется, продолжает добавлять тень поверх предыдущей тени, если выполняется несколько раз, но это незначительная проблема)

- (void) drawLayer: (CALayer*) layer inContext: (CGContextRef)context
{   
    SYSLOG(LOG_DEBUG, "in drawLayer, isShadowed: %d", isShadowed);

    if(isShadowed == true)
    {
        CGContextSaveGState(context);
        CGContextClearRect(context, self.bounds);
        CGContextSetShadow(context, CGSizeMake(10, 10), 3);
        CGContextBeginTransparencyLayer(context, NULL);
        [layer renderInContext:context];
        CGContextEndTransparencyLayer(context);
        CGContextRestoreGState(context);
    }
    else
    {
        [layer renderInContext:context];
    }
}

Спасибо

1 Ответ

0 голосов
/ 14 ноября 2011

Если opaque вашего слоя не НЕТ, CGContextClearRect закрашивает черный цвет, а не пробивает прозрачную дыру в слое. Я предполагаю, что это проблема.

...