0

这不是参考任何特定的代码,但我注意到当我有一个 UIView 有一个阴影添加到它的图层时,在界面方向之间旋转时的动画变得更加滞后/断断续续。

有没有人注意到这个问题或找到了解决方法?

4

2 回答 2

2

使用阴影时, 的shadowPath属性会在性能上CALayer产生非常(!)显着的差异,尤其是在新 iPad 上。虽然我同意在更改显示方向时禁用阴影是一个好主意,但可能值得一试shadowPath(如果您还没有使用它)。尽管路径可以是任何有效CGPathRef的,但在大多数情况下,这是您想要的:

self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.layer.bounds].CGPath;
于 2012-07-30T18:56:16.570 回答
1

就 CPU 时间而言,有些东西非常昂贵。一段时间在 Instruments 中检查一下。

  • 阴影
  • 贝塞尔路径
  • 带有破折号的贝塞尔路径(非常昂贵)

那不是一个完整的列表。我怀疑渐变也会在那里。

如果您发现这些事情正在降低您的动画或重绘,您将需要在UIViewController方法中切换它们。

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
//disable shadows + expensive drawing
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
//enable shadows + expensive drawing
}
于 2012-04-17T22:07:39.430 回答