Iphone 加速层减缓界面旋转

Iphone 加速层减缓界面旋转,iphone,cocoa-touch,core-animation,calayer,cashapelayer,Iphone,Cocoa Touch,Core Animation,Calayer,Cashapelayer,我试图将一些自定义绘图代码从视图移动到CAShapeLayer中,然后将其作为子层添加到原始视图的CALayer中。这也可以很好地工作,但当旋转设备时,动画开始结巴,例如,您只看到原始方向的帧,然后是最终方向,中间最多有一帧-一点也不平滑。相应UIViewController的滑入和滑出动画也有点不稳定,但没有那么多 CAShapeLayer在其路径中的所有内容都是一个CGPathAddRect,它被设置为不透明,其不透明度为1.0f,fillColor被设置为不透明蓝色 但是,在views d

我试图将一些自定义绘图代码从视图移动到CAShapeLayer中,然后将其作为子层添加到原始视图的CALayer中。这也可以很好地工作,但当旋转设备时,动画开始结巴,例如,您只看到原始方向的帧,然后是最终方向,中间最多有一帧-一点也不平滑。相应UIViewController的滑入和滑出动画也有点不稳定,但没有那么多

CAShapeLayer在其路径中的所有内容都是一个CGPathAddRect,它被设置为不透明,其不透明度为1.0f,fillColor被设置为不透明蓝色

但是,在views drawRect方法中直接绘制路径时,动画是平滑的。所以我想这与CAShapeLayer在旋转过程中被设置动画有关

你能告诉我,在制作动画时,如何摆脱这些抖动,或者只是隐藏CAShapeLayer?回到直接绘制CGPaths对我来说不是一个选项,因为我依赖CAShapeLayer的能力来设置其路径的动画。在旋转视图的尝试中,它没有设置动画

/更新:当旋转的UIViewController视图包含以CAGradientLayer子类作为其层类的视图时,也会发生这种情况,例如,以渐变层为背景的视图

干杯


MrMage

有一个hide属性,你可以隐藏CAShapeLayer,然后制作动画。然后调用一个方法,取消隐藏CAShapeLayer,以便在它旋转时看不到它,然后它应该是平滑的。

似乎苹果在iOS 4中解决了这个问题。

我试过了。它不起作用。完全删除-voidWillAnimateRotationInterfaceOrientation:UIInterfaceOrientationinterfaceOrientation持续时间:NSTimeIntervalduration,然后将其重新添加到-voiddidRotateFromInterfaceOrientation:UIInterfaceOrientationfromInterfaceOrientation中,甚至没有任何帮助。您可以将其删除并将其分配给还保存吗?试试看吧。顺便说一句,给我一些空间,我不是iPhone上最聪明的人,甚至在编码方面也不是。看看我的个人资料,看看问题。我真的没有什么背景。我才17岁。很抱歉,我的主页上没有帮助。你真的确定图层是问题所在吗?如果将简单的CAGradientLayer或CAShapeLayer图层添加到视图中,它会结巴。如果我不加,它就不会结巴。也许我会尝试释放、缓存和重新分配图层,但这非常不雅观,我怀疑它是否有用。如果你能使用仪器,那么我会,然后你可以看到问题是纵火。