使用UINavigationController边缘滑动时,CABasicAnimation会重置

我有以下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"]; 

当我使用边缘轻扫手势慢慢地回溯,animation重置到初始状态,这是相当不和谐的。 我有我的fillMode设置和removedOnCompletion设置为NO ,我错过了什么?

设置fillModeremovedOnCompletion整个技巧是无稽之谈 – 这是一个糟糕的build议,已经成为很多答案,但它是完全错误的。 animation是一回事, 指南针层的实际转换是另一个。 您已应用animation,但忘记设置transform以匹配它。 因此,当手势开始并且从层上移除animation时,指南针将以其实际旋转显示(并且改变以跳跃的forms出现)。

感谢上面的亚光,我意识到我错过了以下的一行:

 compass.transform = CGAffineTransformMakeRotation(-1*(((-windBearing+180) * M_PI) / 180));