我在移动它(带动画)后试图缩放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动画更改为以下内容,我发现跳转(以及缩放 down )发生在第二个动画发生之前,即当animateWithDuration:delay:options :动画:完成:被称为。
[UIView animateWithDuration:5 delay:3 options:0 animations:^{
coinView.transform = CGAffineTransformScale(coinView.transform, 1.5, 1.5);
} completion:nil];
答案 0 :(得分:1)
我测试了你的代码,它对我来说很好。你怎么生成你的d?它究竟在哪个块上回来了?
答案 1 :(得分:0)
我发现了问题...
coinView是子视图控制器视图的子视图。问题来自于我覆盖了子视图控制器的viewDidLayoutSubviews
方法以布置所有coinView
,因此每当调用该方法时,硬币视图将移回其原始位置并且子视图控制器打算使用的大小。
感谢您的所有帮助,repoguy和塞尔吉奥!!