Я пытаюсь масштабировать UIView (с анимацией) после его перемещения (с анимацией). Проблема в том, что когда начинается анимация масштабирования, она возвращается в исходное положение. Почему?
[UIView animateWithDuration:t delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
// Drop the ball
CGRect frame = coinView.frame;
frame.origin.y += d;
coinView.frame = frame;
coinView.shouldSparkle = NO;
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.3 animations:^{
// Initial scale up for ball "poof"
coinView.transform = CGAffineTransformScale(coinView.transform, 1.5, 1.5);
} completion:^(BOOL finished) {
[UIView animateWithDuration:0.3 animations:^{
coinView.transform = CGAffineTransformScale(coinView.transform, 0.000001, 0.000001);
} completion:^(BOOL finished) {
[coinView removeFromSuperview];
}];
}];
}];
РЕДАКТИРОВАТЬ: вот как я создал свой d:
static CGFloat groundPositionY = 325;
CGRect convertedFrame = [coinView.superview convertRect:coinView.frame toView:self.view];
CGFloat d = groundPositionY - CGRectGetMaxY(convertedFrame);
EDIT2: Хорошо, поэтому я изменил вторую анимацию UIView на следующую и обнаружил, что прыжок (и масштаб вниз) происходит до того, как происходит вторая анимация, то есть когда animateWithDuration:delay:options:animations: завершение: называется.
[UIView animateWithDuration:5 delay:3 options:0 animations:^{
coinView.transform = CGAffineTransformScale(coinView.transform, 1.5, 1.5);
} completion:nil];
coinView.transform = CGAffineTransformMakeTranslation(0, d);
вместо смены кадра, то это тоже делает что-то странное (он сдвигает его на -d в направлении y, а затем анимирует его, становясь положительным в направлении y, пока он не достигнет исходной позиции) - person fumoboy007   schedule 04.01.2013coinView.transform
перед вторым блоком анимацииCGAffineTransformIdentity
. - person fumoboy007   schedule 05.01.2013