Анимация не работает при втором запуске - PullRequest
0 голосов
/ 09 ноября 2010

Я запускаю этот код для масштабирования и перемещения изображения в анимации.Он отлично работает при первом запуске, но при следующем запуске этого кода изображение не анимируется.Я поместил операторы NSLog до и после преобразований, чтобы увидеть, не влияет ли изображение.См. Результаты под кодом

-(void)animateShowImage:(UIButton *)button
{
     //set the starting animate position
     CGRect frameRect = imageView.frame;

     frameRect.size.width = button.frame.size.width;
     frameRect.size.height = button.frame.size.height;
     frameRect.origin = button.frame.origin;
     imageView.frame = frameRect;


     NSLog(@"imageview width : %f", imageView.frame.size.width);
     NSLog(@"imageview height : %f", imageView.frame.size.height);
     NSLog(@"imageview x : %f", imageView.frame.origin.x);
     NSLog(@"imageview y : %f", imageView.frame.origin.y);

     [UIView beginAnimations:nil context:NULL];
     [UIView setAnimationDuration:1.2];

     CGAffineTransform move = CGAffineTransformMakeTranslation(30, 20);
     CGAffineTransform scale = CGAffineTransformMakeScale(3,3);

     CGAffineTransform finalTransform = CGAffineTransformConcat(move, scale);
     imageView.transform = finalTransform;

     [UIView commitAnimations]; 

     NSLog(@"imageview width : %f", imageView.frame.size.width);
     NSLog(@"imageview height : %f", imageView.frame.size.height);
     NSLog(@"imageview x : %f", imageView.frame.origin.x);
     NSLog(@"imageview y : %f", imageView.frame.origin.y);
}

NSLog первый запуск:

2009-10-19 19:13:41.339 MyProject[15847:207] imageview width : 48.000000
2009-10-19 19:13:41.341 MyProject[15847:207] imageview height : 45.000000
2009-10-19 19:13:41.341 MyProject[15847:207] imageview x : 8.000000
2009-10-19 19:13:41.342 MyProject[15847:207] imageview y : 57.000000
(gdb) continue
Current language:  auto; currently objective-c
2009-10-19 19:13:44.649 MyProject[15847:207] imageview width : 144.000000
2009-10-19 19:13:44.650 MyProject[15847:207] imageview height : 135.000000
2009-10-19 19:13:44.650 MyProject[15847:207] imageview x : 50.000000
2009-10-19 19:13:45.080 MyProject[15847:207] imageview y : 72.000000

NSLog второй запуск:

2009-10-19 19:13:51.487 MyProject[15847:207] imageview width : 48.000000
2009-10-19 19:13:51.488 MyProject[15847:207] imageview height : 45.000000
2009-10-19 19:13:51.489 MyProject[15847:207] imageview x : 8.000000
2009-10-19 19:13:51.489 MyProject[15847:207] imageview y : 57.000000
(gdb) continue
2009-10-19 19:13:54.424 MyProject[15847:207] imageview width : 48.000000
2009-10-19 19:13:54.425 MyProject[15847:207] imageview height : 45.000000
2009-10-19 19:13:54.425 MyProject[15847:207] imageview x : 8.000000
2009-10-19 19:13:57.433 MyProject[15847:207] imageview y : 57.000000

Я не могу понять, что яЯ делаю неправильно.Любая помощь оценивается!

1 Ответ

1 голос
/ 09 ноября 2010

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

imageView.transform = CGAffineTransformIdentity;

У меня недостаточно понимания CoreAnimation, чтобы правильно объяснить, почему это необходимо, но, надеюсь, кто-то с такими знаниями наткнется на этот вопрос и просветит нас.

Совет: Если вам нужно написать CGRect и CGPoint, вы можете использовать вспомогательные методы NSStringFromCGRect и NSStringFromCGPoint.

NSLog(@"imageView.frame = %@", NSStringFromCGRect(imageView.frame));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...