我已经实现了一个非默认动画,用于将新视图推送到屏幕上(请参阅下面的代码)。出于某种原因,一旦我实现了这段代码,它就会导致我的UIActivityIndicatorViews停止工作。它们将在屏幕上显示,但即使它们的isAnimating为真,也不会显示动画。我认为这是因为我改变了CATransition,但无法弄清楚如何为UIActivityIndicatorView修复它。
更改推送的默认动画
CATransition* fade = [CATransition animation];
fade.duration = 1.0;
fade.type = kCATransitionFade;
fade.subtype = kCATransitionFromTop;
[self.navigationController.view.layer
addAnimation:fade forKey:kCATransition];
稍后在viewDidLoad中我开始动画
[spinner startAnimating];
但是微调器会显示而不是动画。出于某种原因,第一个旋转器我有动画,但之后什么都没有。
答案 0 :(得分:3)
在推送或弹出视图控制器时,在UINavigationController的子类中使用CATransition来获取自定义动画时,我遇到了这个问题。
在这个UINavigationController的子类的方法中,我有这个代码:
- (void)addCustomTransition
{
CATransition* transition = [CATransition animation];
transition.duration = kAnimationDuration;
transition.timingFunction =
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[self.view.layer addAnimation:transition forKey:nil];
}
但是,我后来发现你还必须在push / popped viewController的视图层添加相同的动画:
- (void)addCustomTransitionToViewController:(UIViewController *)viewController
{
CATransition* transition = [CATransition animation];
transition.duration = kAnimationDuration;
transition.timingFunction =
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[self.view.layer addAnimation:transition forKey:nil];
[viewController.view.layer addAnimation:transition forKey:nil]; // this is what was missing
}
此推送/弹出视图控制器的视图是具有未正确动画的UIActivityIndicatorView的视图。
希望这有帮助!
答案 1 :(得分:-1)
只需将持续时间从1.0更改为0.3或更少 只是我经过测试,它正在运作