我正在使用[UIView animationWithDuration..]
它效果很好,很流畅......但是当我将此效果添加到UIView时,它会冻结......
_menuView.layer.masksToBounds = NO;
_menuView.layer.shadowOffset = CGSizeMake(-8, 10);
_menuView.layer.shadowRadius = 5;
_menuView.layer.shadowOpacity = 0.5;
有什么想法吗?如何解决?
由于
答案 0 :(得分:1)
您需要指定shadowPath,否则使用每个帧重新计算阴影的图层,这会导致很大的性能开销。
答案 1 :(得分:0)
阴影的常见问题是,如果不设置shadowPath
,性能将非常差。尝试添加
_menuView.layer.shadowPath = [UIBezierPath bezierPathWithRect:_menuView.layer.bounds].CGPath;
当然,假设您正在制作动画的视图确实是矩形的(这是我在这种情况下所做的优化)。
答案 2 :(得分:0)
首先,在动画块中为图层的属性设置动画是不正确的,它们是不可动画的。请阅读文档。
以下UIView属性是可动画的:
@property frame
@property bounds
@property center
@property transform
@property alpha
@property backgroundColor
@property contentStretch
您可以使用Core Animation和视图的底层来创建动画。由于视图和图层对象错综复杂地链接在一起,因此对视图图层的更改会影响视图本身。
看看这个问题,它描述了如何为cornerRadius设置动画: