使用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
,我错过了什么?
设置fillMode
和removedOnCompletion
整个技巧是无稽之谈 – 这是一个糟糕的build议,已经成为很多答案,但它是完全错误的。 animation是一回事, 指南针层的实际转换是另一个。 您已应用animation,但忘记设置transform
以匹配它。 因此,当手势开始并且从层上移除animation时,指南针将以其实际旋转显示(并且改变以跳跃的forms出现)。
感谢上面的亚光,我意识到我错过了以下的一行:
compass.transform = CGAffineTransformMakeRotation(-1*(((-windBearing+180) * M_PI) / 180));