iPhone:更改CATTransition会导致UIActivityIndicatorView停止设置动画

iPhone:更改CATTransition会导致UIActivityIndicatorView停止设置动画,iphone,uiactivityindicatorview,catransition,Iphone,Uiactivityindicatorview,Catransition,我已经实现了一个非默认的动画,当一个新的视图被推到屏幕上时(见下面的代码)。出于某种原因,一旦我实现了这段代码,它就会导致我的UIActivityIndicatorView停止工作。它们将显示在屏幕上,但即使在isAnimating为真时也不会显示动画。我想这是因为我更改了CATTransition,但不知道如何为UIActivityIndicatorView修复它 更改推送的默认动画 CATransition* fade = [CATransition animation]; fade.dur

我已经实现了一个非默认的动画,当一个新的视图被推到屏幕上时(见下面的代码)。出于某种原因,一旦我实现了这段代码,它就会导致我的UIActivityIndicatorView停止工作。它们将显示在屏幕上,但即使在isAnimating为真时也不会显示动画。我想这是因为我更改了CATTransition,但不知道如何为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];

但微调器将显示,而不会设置动画。出于某种原因,我使用的第一个微调器会制作动画,但之后什么都不会制作。

只需将持续时间从1.0更改为0.3或更少

我刚刚经过测试,它正在工作

当在UINavigationController的子类中使用CATTransition以在按下或弹出视图控制器时拥有自定义动画时,我遇到了这个问题

在这个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];
}
但是,我后来发现,您还必须将相同的动画添加到推送/弹出的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未正确设置动画的视图


希望这有帮助

谢谢,我有我自己的进度实现,我正在使用它作为解决方法,但我仍然想知道问题的原因。是的,我也在我的项目中尝试了你的实现,我面临同样的问题。我只是实现了我自己的类来解决这个问题,类似于你的第一种方法,bit修改后的补丁看起来不太干净。我的意思是,如果我仍然想要1.0的持续时间,为什么它不能工作呢?实际上ios在同一时间使用单一的动画样式。CATTransition和activity指示器都包含过渡效果,所以应用了第一个效果,第二个效果是skip。哦,太神奇了,这就是我想的,但我不确定。你是否有机会链接到苹果在哪里描述或声明他们操作系统的这一方面?这将完美地回答我之前的问题。我意识到你的问题已经快2年了。我必须补充一点,这在iOS 6中是有效的。