iphone - 当视图的阴影打开时,动画的性能非常差

时间:2011-10-12 21:37:23

标签: iphone performance ipad animation shadow

我有一个带有UILabel影子的CALayer。我只是通过UIView动画移动它。

表现不佳,我可以看到动画根本不流畅。

我认为这是导致动画问题的UILabel的阴影,因为如果我关掉阴影,动画会变得像平常一样光滑。

我尝试过使用view.layer.shouldRasterize = YES;

但动画表现仍然存在。

任何人都可以给我一些提示吗?

由于

2 个答案:

答案 0 :(得分:40)

使用shadowPath属性可以极大地提高CALayer阴影的性能 - 这样就可以绘制阴影而无需重新计算图层的alpha遮罩。对于矩形视图,您可以像这样使用它:

theView.layer.shadowPath = [UIBezierPath bezierPathWithRect:theView.bounds].CGPath;

或者,如果它的角是圆角的,

theView.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:theView.bounds cornerRadius:theView.layer.cornerRadius].CGPath;

请注意,这是视图边框周围的阴影 - 如果您希望在文本本身的阴影上获得更好的性能,则需要使用标签的文本阴影属性(这会牺牲CALayer阴影的细节,如模糊,为了更好的渲染速度)或者更复杂的选项 - 创建一个CGPathRef,用作文本字形本身的图层shadowPath

答案 1 :(得分:0)

不确定这是否是您正在寻找的答案,但我发现了这一点:Drop Shadow on UITextField text

这可能是更好的表现,我没有尝试过,但它似乎会。