Как создать несколько анимаций UIImageView, начиная одну анимацию после окончания предыдущей анимации, используя CFAffineTransform - PullRequest
1 голос
/ 28 августа 2011

во-первых, спасибо, что прочитали мой вопрос.В настоящее время я пытаюсь выполнить несколько анимаций, используя CFAffineTransform для репликации эффекта прожига кенса.

Попытайтесь достичь: увеличьте изображение, затем передвиньте изображение вправо.

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

1-я анимация - увеличение изображения.

[UIView beginAnimations:@"zoomin" context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:5];

CGAffineTransform zoomIn = CGAffineTransformMakeScale(5.8, 5.8);

imageView.transform = zoomIn;

[UIView commitAnimations];

2-я анимация - панорамирование изображения влево.

[UIView beginAnimations:@"panning" context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:5];

CGAffineTransform moveRight = CGAffineTransformMakeTranslation(200, 0);

imageView.transform = moveRight;

[UIView commitAnimations];

2-й код анимации вызывается только после окончания первой анимации.

1 Ответ

1 голос
/ 28 августа 2011

Это не работает, потому что вы используете CGAffineTransformMakeTranslation, что означает, что он должен начинаться с исходной позиции (аффинно - единичная матрица, и переводит представление в не преобразованное состояние), то, что вы должны использовать, это CGAffineTransformTranslate, который принимаеттребуемая (или текущая трансформация) матрица в качестве первого аргумента.

Так что если вы сделаете:

CGAffineTransform moveRight = CGAffineTransformTranslate(imageView.transform ,200, 0);

Вы использовали

CGAffineTransform moveRight = CGAffineTransformMakeTranslation(200, 0);

, что аналогично:

CGAffineTransform moveRight = CGAffineTransformTranslate(CGAffineTransformIdentity ,200, 0);

Предлагаю вам прочитать отличный пост Демистификация CGAffineTransform

...