我有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];
}
}
谢谢
答案 0 :(得分:0)
如果图层的opaque
不是NO,则CGContextClearRect会绘制黑色而不是在图层中打孔透明孔。我猜这就是问题所在。