我有一些纸牌游戏,使用CALayers绘制个人卡片。屏幕上很容易有40或50个,通常可以正常工作。
我最近尝试使用CALayers的简单属性打开它们的阴影:
theCardLayer.shadowOffset = CGSizeMake(3,2);
theCardLayer.shadowOpacity = 0.7f;
那时,程序开始变得非常迟钝。很公平;一些文档说阴影可能是CPU密集型的。
有关如何有效地在所有内容上绘制阴影的任何想法?它们都在同一个UIView中的同一个CALayer上,所以我想知道是否有一种方法来拉动图层的掩模或它的UIView和阴影,或者其他......
iOS5以下的任何功能都是合理的游戏。
答案 0 :(得分:3)
至少,请尝试设置图层的shadowPath
属性。它可以使阴影渲染速度明显加快。
答案 1 :(得分:0)
Kurt提供了正确的解决方案。以下是如何使用shadowPath的示例:
UIBezierPath *thisCLPath = [UIBezierPath
bezierPathWithRoundedRect:theCardLayer.bounds
cornerRadius:10.0f];
theCardLayer.shadowPath = thisCLPath.CGPath;
显然,我在这里使用圆角。对于直边图层,您只需使用bezierPathWithRect:
即可。 UIBezierPath中还有一些其他有用的方法。
结果只是老款iOS设备(如iPhone4或中型iPod Touch)的延迟,而且在iPad3上熠熠生辉。