Обмен изображения UIImageView при вращении и перемещении оставляет следы исходного изображения - PullRequest
1 голос
/ 12 июля 2011

Я беру изображение вида «Flipped Text» и поворачиваю его, одновременно перемещая вниз по экрану и регулируя рамку. Я также заменяю изображение на другое, но похожее изображение.

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

enter image description here

Мой код выглядит следующим образом (logoImage UIImageView):

// Swap it
self.logoImage.image = [UIImage imageNamed:@"logo.png"];
CATransition *transition = [CATransition animation];
transition.duration = duration;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionFade;
[self.logoImage.layer addAnimation:transition forKey:nil];


// Spin it
CABasicAnimation* spinAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
spinAnimation.toValue = [NSNumber numberWithFloat:6*M_PI];
spinAnimation.duration = duration;
spinAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
spinAnimation.removedOnCompletion = YES;
spinAnimation.fillMode = kCAFillModeForwards;
[self.logoImage.layer addAnimation:spinAnimation forKey:@"spinAnimation"];


// Shrink it and Move it
CGRect newFrame = [self logoFrameForInterfaceOrientation:self.interfaceOrientation];
[UIView animateWithDuration:duration
                      delay:0.0
                    options:UIViewAnimationCurveEaseOut
                 animations:^{
                     self.logoImage.frame = newFrame;
                 }
                 completion:nil];

Как сделать так, чтобы свопинг изображения происходил на месте?

1 Ответ

1 голос
/ 12 июля 2011

Попробуйте поменять местами изображение в блоке завершения . (в настоящее время ноль)

редактирование: Если они существенно отличаются, вы можете использовать второй UIImageView. Выцветайте один, пока вы входите. Вы можете сделать это, пока они переводят, или подождать, пока «усохший» оригинал появится и исчезнуть, пока «лучшая» уменьшенная версия исчезает.

Затем удалите ненужный дополнительный вид в блоке завершения этой анимации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...