我有一个CALayer对象。在viewDidLoad中:我使用layer.transform = CATransform3DRotate(CATransform3DIdentity, M_PI/8.0, 0, 0, 1);
设置了一个转换。iPhoneSDK设置动画完成后,CALayer.transform不起作用
加载后,我应用CAKeyframeAnimation
来为该图层的旋转设置动画效果。它也可以正常工作并完成动画。为防止图层在完成后删除动画,我使用了
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
所有这些都很好。但是当我尝试再次更改变换(没有动画)时出现问题layer.transform = CATransform3DRotate(CATransform3DIdentity, M_PI/8.0, 0, 0, 1);
。什么都没发生。图层不会将其转换更改为我所指定的。如果我再次运行动画,动画将会发生。但不能在没有动画的情况下更改变形属性。
任何帮助表示赞赏..
那么,我需要最后的视觉状态(动画之后)保持,直到我手动将它设置为一个新值。这就是为什么我设置removedOnCompletion = NO; 我知道变换和连接它们,但即使在动画之后将变换设置为不同的值(M_PI/8.0以外),它也不会直观地反映出来。看起来好像该层的视觉状态在用我当前的代码进行动画之后被锁定。 我想我会尽量避免使用removedOnCompletion的东西,并与手动设置animationDidStop中的layer.transform。我不知道它是否有效。我会尽力在这里发表。 – ravinsp 2010-08-29 08:07:40
我做过一次(removedOnCompletion = NO,fillMode = kCAFillModeForwards)。但后来我看到这在恢复应用程序状态时(从不活动/背景到活动/前景)有一些效果。我看到的是它是**模型值**,它用于恢复屏幕上的图层,然后执行整个动画(忽略持续时间值)。这只是在iPhone或iPad模拟器之一(我不记得哪一个)。 – debleek63 2011-11-10 12:58:49