我有一个带有UILabel
影子的CALayer
。我只是通过UIView
动画移动它。
表现不佳,我可以看到动画根本不流畅。
我认为这是导致动画问题的UILabel
的阴影,因为如果我关掉阴影,动画会变得像平常一样光滑。
我尝试过使用view.layer.shouldRasterize = YES;
但动画表现仍然存在。
任何人都可以给我一些提示吗?
由于
答案 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
这可能是更好的表现,我没有尝试过,但它似乎会。