我在CABasicAnimation中为viewDidLoad内的视图控制器运行以下UINavigationController:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.duration = 1;
animation.additive = NO;
animation.removedOnCompletion = NO;
animation.fillMode = kCAFillModeForwards;
animation.fromValue = [NSNumber numberWithFloat:0];
animation.toValue = [NSNumber numberWithFloat:-1*(((-windBearing+180) * M_PI) / 180)];
[compass.layer addAnimation:animation forKey:@"90rotation"];

当我使用边缘轻扫手势缓慢地向后导航时,动画将重置为初始状态,这非常震撼。我将fillMode设置为removedOnCompletion并将NO设置为ojit_code,我缺少什么?

最佳答案

设置fillModeremovedOnCompletion的整个技巧都是胡说八道-这是一个不好的建议,已经使自己成为很多答案,但这是完全错误的。动画是一回事;指南针层的实际转换是另一个。您已经应用了动画,但是忘记了设置transform使其匹配。因此,当手势开始并且动画从图层中删除时,指南针以其实际旋转显示(并且更改显示为跳跃)。

关于ios - 使用UINavigationController进行边缘滑动时,CABasicAnimation会重置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33597503/

10-09 10:16