2013-05-22 3 views
6

Я пытаюсь сделать анимацию UIView, где мое изображение начинается в верхнем левом углу экрана и расширяется до исходного размера и помещается в середине экрана. До сих пор я мог сделать это отдельно, но когда я пытаюсь объединить эти анимации, он будет делать только анимацию масштаба.Как объединить масштаб и анимацию перевода

Есть ли способ, которым я могу сделать эту работу с Масштаб и перевод в то же время?

Вот то, что я до сих пор:

CGAffineTransform setpointTrans = CGAffineTransformMakeTranslation(-200.0f, -200.0f); 
CGAffineTransform setpointScale = CGAffineTransformMakeScale(0.0f, 0.0f); 
_RSEImage.transform = CGAffineTransformConcat(setpointTrans, setpointScale); 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDuration:5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
CGAffineTransform scaleTrans = CGAffineTransformMakeScale(1.0f, 1.0f); 
CGAffineTransform lefttorightTrans = CGAffineTransformMakeTranslation(0.0f,0.0f); 
_RSEImage.transform = CGAffineTransformConcat(scaleTrans, lefttorightTrans); 
[UIView commitAnimations]; 

Хорошо, я понял это, вот что я изменил:

_RSEImage.transform = CGAffineTransformMakeScale(0.0f, 0.0f); 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDuration:5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
CGAffineTransform scaleTrans = CGAffineTransformMakeScale(1.0f, 1.0f); 
CGAffineTransform lefttorightTrans = CGAffineTransformMakeTranslation(200.0f,200.0f); 
_RSEImage.transform = CGAffineTransformConcat(scaleTrans, lefttorightTrans); 
[UIView commitAnimations]; 
+0

Я пробовал свой код, и он отлично делает то, что вы хотели бы достичь: масштабировать и переводить ... Какова точка начала RESImage перед этим кодом? – nzs

+0

x 160 y 242, я думаю, это то, что вы просите, извините, это мое первое приложение для iphone. Размер изображения 161 x 71 –

+0

Трудно сказать из этого кода, где у вас есть проблема, потому что в основном этот фрагмент кода работает, так вы делаете аффинное преобразование «слияние». Поэтому я предполагаю, что какая-то другая часть вашего кода предотвращает какой-то перевод или не видно ... Начните добавлять функции постепенно, комментируя вещи и проверяя, что до этого момента все выглядит нормально. Например. проверьте этот фрагмент на первые 3 строки с масштабом 0,3 ф и -100f перевод - вы видите img? затем добавьте перевод, чтобы проверить параметры, затем объединить со шкалой. Вы также можете использовать мой ответ, так как блоки проще. – nzs

ответ

2

Вы можете использовать это, анимационные блоки, а также (с iOS4):

[UIView animateWithDuration: 5 
         delay: 0 
        options: (UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction) 
       animations:^{_RSEImage.center = CGPointMake(300, 300) ; _RSEImage.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2.0, 2.0);} 
       completion:^(BOOL finished) { } 
]; 

Соответствующий официальный документ здесь: link

Хороший учебник здесь: link

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

+0

, который просто масштабировал изображение до его размера вдвое, он по-прежнему не перемещал изображение из левого верхнего угла в середину. –

+0

Sthing weird happening ... ;-) Что такое тип _RSEImage, можете ли вы поделиться кодом, как вы добавляете в представление? или любой другой код, связанный с _RSEImage? – nzs

+0

Я понял это и отредактировал свой вопрос, я узнаю эти блоки, кажется, намного проще. Спасибо за помощь. –