(iphone)我在图像后面有黑色矩形,为什么?

时间:2011-02-18 09:34:04

标签: iphone shadow layer

我有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 :(得分:0)

如果图层的opaque不是NO,则CGContextClearRect会绘制黑色而不是在图层中打孔透明孔。我猜这就是问题所在。