2011-12-21 4 views
3

Я реализовал анимацию, отличную от стандартного, для отображения нового представления на экране (см. Код ниже). По какой-то причине, как только я реализовал этот код, он заставил мои UIActivityIndicatorViews перестать работать. Они будут отображаться на экране, но не оживлять, даже если их isAnimating является истинным. Я полагаю, что это связано с тем, что я меняю CAT-переход, но не могу понять, как его исправить для UIActivityIndicatorView.iPhone: изменение 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]; 

но кок покажет и не живой. По какой-то причине самый первый spinner я оживляю, но после этого ничего.

ответ

-1

просто изменить продолжительность времени от 1,0 до 0,3 или менее
просто я испытано и он работает

+0

спасибо, что у меня есть своя реализация прогресса, которую я использую в качестве обходного пути, но все же хочу знать, почему проблема была вызвана в первую очередь. – MikeIsrael

+0

да, я также пробую вашу реализацию в моем проекте, и я сталкиваюсь с той же проблемой. – Hiren

+0

попробуйте мой обновленный ответ – Hiren

3

Я сталкивался с этой проблемой при использовании CATransition внутри подкласса UINavigationController иметь пользовательскую анимацию при нажатии или выпадающие контроллеры.

Внутри метода подкласса этого 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, который не был анимирован правильно.

Надеюсь, это поможет!

+0

Я понял, что ваш вопрос почти 2 года. Я должен добавить, что это сработало в iOS 6. –

+0

Это работает для меня –