2016-01-23 7 views
-1

Я пытаюсь создать индикатор активности, currentView будет статическим, а nextView будет анимировать слева направо, справа налево, сверху вниз и снизу вверх.Индикатор активности iOS

Я написал код, как показано ниже. Проблема, с которой я столкнулся, - это, вместо всех четырех анимаций, я получаю только анимацию анимации сверху вниз. Может кто-нибудь помочь мне, как запустить все четыре анимации один за другим, пока процесс не будет завершен

statusImage = [UIImage imageNamed:@"image2.png"]; 
moveImage = [UIImage imageNamed:@"image1.png"]; 

currentView = [[UIImageView alloc] 
          initWithImage:statusImage]; 


nextView = [[UIImageView alloc] 
         initWithImage:moveImage]; 

//Add your custom activity indicator to your current view 
[self.view addSubview:currentView]; 
[self.view addSubview:nextView]; 

CATransition *transition1 = [CATransition animation]; 
[transition1 setType:kCATransitionPush]; 
[transition1 setSubtype:kCATransitionFromLeft]; 
[transition1 setDuration:1]; 
[nextView.layer addAnimation:transition1 forKey:@"string1"]; 

CATransition *transition2 = [CATransition animation]; 
[transition2 setType:kCATransitionPush]; 
[transition2 setSubtype:kCATransitionFromRight]; 
[transition2 setDuration:1]; 
[nextView.layer addAnimation:transition2 forKey:@"string2"]; 

CATransition *transition3 = [CATransition animation]; 
[transition3 setType:kCATransitionPush]; 
[transition3 setSubtype:kCATransitionFromTop]; 
[transition3 setDuration:1]; 
[nextView.layer addAnimation:transition3 forKey:@"string3"]; 

CATransition *transition4 = [CATransition animation]; 
[transition4 setType:kCATransitionPush]; 
[transition4 setSubtype:kCATransitionFromBottom]; 
[transition4 setDuration:1]; 
[nextView.layer addAnimation:transition4 forKey:@"string4"]; 
+0

Вы действительно просто повторяете свой предыдущий вопрос http://stackoverflow.com/questions/34961016/ios-custom-activity-indicator. (И вы не приняли никакого ответа там.) Также я замечаю, что вы задаете неправильный вопрос; вы продолжаете делать _assumptions_ о том, как это сделать, а не просто описывать желаемый эффект и просить _how_ сделать это. – matt

ответ

0

Может кто-нибудь помочь мне, как запустить все четыре анимации один за другим, пока процесс не будет завершен

Слой может иметь только одну анимацию перехода за раз. Нет смысла предоставлять ключ для анимации перехода. Ключ всегда будет действительно kCATransition. Ваши string1 и т. Д. Бессмысленны; просто используйте nil. Более того, ваш код не имеет смысла; несколько анимаций, прикрепленных к слою, заставляют эти анимации выполняться одновременно (если возможно), а не последовательно.

Необходимо, чтобы цепь анимация. Настройте свой код следующим образом:

  • Выполните первую анимацию, предоставив ей обработчик завершения. Этот обработчик завершения вызывается, когда заканчивается первая анимация.

  • В обработчике завершения сделайте вторую анимацию, предоставив ей обработчик завершения. Этот обработчик завершения вызывается, когда заканчивается вторая анимация.

  • В обработчике завершения выполните третью анимацию, предоставив ей обработчик завершения. Этот обработчик завершения вызывается, когда заканчивается третья анимация.

  • В обработчике завершения выполните четвертую анимацию.

+0

Извините, я не знаю, как использовать обработчик завершения для CATransition, вы можете дать пример кода –

+0

Вы передаете анимацию делегату. CATransition - CAAnimation: https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CAAnimation_class/index.html Посмотрите на 'делегат'. – matt

+0

Хорошо, я проверю, что –