2011-12-24 3 views
4

Я пытаюсь имитировать неправильную анимацию ввода пароля в OS X с UIAlertView в iOS. По сути, я хочу, чтобы это перевести предупреждение влево, а затем перевести правильно. Вот что я делаю:Последовательность аффинного преобразования с кварцем 2D

[UIView animateWithDuration:0.5 
       animations:^{ 
        alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 200, 0); 
        alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, -200, 0); 
       }]; 

Это не имеет желаемого эффекта. Предупреждение стреляет вправо мгновенно, а затем плавно переводит влево. Как я могу заставить оба перевода выполнять гладко друг за другом?

ответ

8

Попробуйте это:

[UIView animateWithDuration:0.5 animations:^{ 

     alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 200, 0); 

    } completion:^(BOOL finished) { 

     [UIView animateWithDuration:0.5 animations:^{ 
      alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, -200, 0); 
     }]; 
    }]; 

Но я хотел бы сделать анимацию, как это:

[UIView animateWithDuration:0.1 animations:^{ 

     alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 20, 0); 

    } completion:^(BOOL finished) { 

     [UIView animateWithDuration:0.1 animations:^{ 

      alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, -20, 0); 

     } completion:^(BOOL finished) { 

      [UIView animateWithDuration:0.1 animations:^{ 
       alertView.transform = CGAffineTransformTranslate(CGAffineTransformIdentity, 0, 0); 
      }]; 

     }]; 
    }]; 

до вас! ;-)

+0

Отлично! Раньше я пытался использовать блок завершения, но это, похоже, не работало. Однако ваше решение. Благодарю. – lukestringer90

+0

Ваш прием! :) – Ecarrion

Смежные вопросы