UIView动画freez

时间:2013-11-19 23:05:08

标签: ios uiview

我正在使用[UIView animationWithDuration..]它效果很好,很流畅......但是当我将此效果添加到UIView时,它会冻结......

 _menuView.layer.masksToBounds = NO;
_menuView.layer.shadowOffset = CGSizeMake(-8, 10);
_menuView.layer.shadowRadius = 5;
_menuView.layer.shadowOpacity = 0.5;

有什么想法吗?如何解决?

由于

3 个答案:

答案 0 :(得分:1)

您需要指定shadowPath,否则使用每个帧重新计算阴影的图层,这会导致很大的性能开销。

答案 1 :(得分:0)

阴影的常见问题是,如果不设置shadowPath,性能将非常差。尝试添加

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

当然,假设您正在制作动画的视图确实是矩形的(这是我在这种情况下所做的优化)。

答案 2 :(得分:0)

首先,在动画块中为图层的属性设置动画是不正确的,它们是不可动画的。请阅读文档。

https://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/UIView/UIView.html

以下UIView属性是可动画的:

  @property frame
  @property bounds
  @property center
  @property transform
  @property alpha
  @property backgroundColor
  @property contentStretch

您可以使用Core Animation和视图的底层来创建动画。由于视图和图层对象错综复杂地链接在一起,因此对视图图层的更改会影响视图本身。

看看这个问题,它描述了如何为cornerRadius设置动画:

Changing cornerRadius using Core Animation