Последовательность аффинного преобразования с кварцевым 2D

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

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

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

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

 [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); }]; }]; }]; 

Вам решать! 😉

Interesting Posts
Давайте будем гением компьютера.