CAShapeLayer减慢界面旋转

问题描述:

我试图将一些自定义绘图代码从视图移动到CAShapeLayer,然后将其作为子图层添加到原始视图的CALayer。这也很好,但是当旋转设备时,动画开始口吃,例如,你只能看到原始方向的框架,然后是最终的方向,最多只有一帧 - 完全不平滑。相应的UIViewController的滑入和滑出动画也有点不切实际(但不是那么多)。CAShapeLayer减慢界面旋转

所有CAShapeLayer在其path是一个CGPathAddRect,它被设置为opaque,其opacity1.0ffillColor设置为不透明的蓝色。

直接在视图drawRect方法中绘制路径时,动画平滑。所以我想这跟旋转过程中的动画CAShapeLayer有关。

你能告诉我如何摆脱这些匆匆或只是在动画时隐藏CAShapeLayer?回到刚刚绘制CGPath s不是我的选择,因为我依靠CAShapeLayer为其路径设置动画的能力(在我尝试旋转视图时不会生成动画)。

/更新:当旋转的UIViewController的视图包含CAGradientLayer的子类作为其layerClass(例如,具有梯度层作为背景的视图)的视图时,也会发生这种情况。

干杯

MrMage

好像这个问题已在iOS的4

以及有一个隐藏属性,可以隐藏CAShapeLayer然后做动画。然后调用取消隐藏CAShapeLayer,使你看不到它,而它旋转的方法,然后将其应光滑

+0

我试图得到修复苹果那。它不起作用。它甚至不利于彻底清除'CAShapeLayer'在' - (空)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation \t \t \t \t \t \t \t \t \t \t时间:(NSTimeInterval)duration'然后'重新添加 - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation'。 – MrMage 2010-01-12 17:59:47

+0

那么你可以delloc它和alloc并保存它呢?试试也许。 BTW给我一些余地我不是iPhone最伟大的智慧,甚至在编码方面。只要看看我的个人资料,看看问题。我身后的背景真的很少。我只有17岁。对不起,我的一方缺乏帮助 – Jaba 2010-01-15 14:28:52

+0

你真的确定这一层甚至是问题吗? – Jaba 2010-01-15 17:08:31