2012-04-17 84 views
0

这不是引用任何特定的代码,但我注意到,当我有一个UIView将阴影添加到它的图层时,在界面方向之间旋转时的动画变为更滞后/波涛汹涌。当阴影可见时,iOS屏幕旋转会退化

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

回答

1

有些东西在CPU时间方面非常昂贵。在乐器中查看一段时间。

  • 阴影
  • 贝塞尔路径与破折号(真贵)
  • 贝塞尔路径

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

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

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

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
//enable shadows + expensive drawing 
} 
+0

非常感谢好先生。尽管如此,它们实际上降低了性能,实在太糟糕了。也许在视图下方显示预先制作的阴影UIImage,而不是使用内置阴影渲染。 – 2012-04-20 04:04:24

2

当使用阴影的CALayershadowPath特性使得在性能上非常(!)noticable差异,尤其是在新的iPad。虽然我同意在更改显示屏方向时禁用阴影是个不错的主意,但也可以尝试仅使用shadowPath(如果您尚未使用它)。虽然路径可以是任何有效的CGPathRef,但在大多数情况下,这是你想要的:

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