0

我有一些纸牌游戏使用 CALayers 来绘制个人卡片。屏幕上很容易有 40 或 50 个,通常效果很好。

我最近尝试使用 CALayers 的简单属性打开它们的阴影:

theCardLayer.shadowOffset = CGSizeMake(3,2);
theCardLayer.shadowOpacity = 0.7f;

那时,该程序开始变得非常滞后。很公平; 一些文档说阴影可能是 CPU 密集型的。

关于如何有效地在所有东西上绘制阴影的任何想法?它们都在同一个 UIView 中的同一个 CALayer 上,所以我想知道是否有办法拉出图层的蒙版或其 UIView 和阴影,或者其他什么...

iOS5 之前的任何功能都是公平的游戏。

4

2 回答 2

3

至少,尝试设置图层的shadowPath属性。它可以显着加快阴影渲染速度。

于 2012-09-29T06:34:08.740 回答
0

Kurt 提供了正确的解决方案。下面是一个如何使用 shadowPath 的示例:

UIBezierPath *thisCLPath = [UIBezierPath 
                            bezierPathWithRoundedRect:theCardLayer.bounds 
                            cornerRadius:10.0f];
theCardLayer.shadowPath = thisCLPath.CGPath;

显然,我在这里使用圆角。对于直边层,您可以使用bezierPathWithRect:. UIBezierPath 中还有一些其他有用的方法。

结果只是在较旧的 iOS 设备(如 iPhone4 或中代 iPod Touch)上滞后,而在 iPad3 上则非常出色。

于 2012-10-01T22:57:27.467 回答