Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在设置帧更改动画后使用变换缩放UIView会导致UIView在缩放之前跳回原始帧_Objective C_Ios_Uiviewanimation_Cgaffinetransform - Fatal编程技术网

Objective c 在设置帧更改动画后使用变换缩放UIView会导致UIView在缩放之前跳回原始帧

Objective c 在设置帧更改动画后使用变换缩放UIView会导致UIView在缩放之前跳回原始帧,objective-c,ios,uiviewanimation,cgaffinetransform,Objective C,Ios,Uiviewanimation,Cgaffinetransform,我尝试在移动UIView(使用动画)后缩放它(使用动画)。问题是,当缩放动画开始时,它会跳回原始位置。为什么? [UIView animateWithDuration:t delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{ // Drop the ball CGRect frame = coinView.frame; frame.origin.y += d; coinView.frame

我尝试在移动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:completion:时,会发生跳跃(和缩放)

[UIView animateWithDuration:5 delay:3 options:0 animations:^{
    coinView.transform = CGAffineTransformScale(coinView.transform, 1.5, 1.5);
} completion:nil];

我测试了你的代码,对我来说效果很好。你如何生成你的d?它到底在哪个街区返回?

我发现了问题

coinView是子视图控制器视图的子视图。问题来自这样一个事实,即我覆盖了子视图控制器的
viewdilayoutsubview
方法来布局所有
coinView
,因此每当调用该方法时,coin视图都会移回子视图控制器预期的原始位置和大小


谢谢你们的帮助,雷普盖伊和塞尔吉奥

是否尝试删除第二个和第三个动画,并检查视图是否保持其位置?你在这段代码之外(我的意思是,在它之后)对视图做了什么吗?是的,我做了,它做了。不,在这段代码之后,我不会涉及这些视图(或任何相关视图)而不是帧更改,然后它也会做一些奇怪的事情(它会在y方向将其移动-d,然后在y方向将其设置为正,直到它到达原始位置)您认为coinView的层内容设置为CGImage是否重要?编辑:我将其更改为UIImageView子视图,但没有任何更改。在xib或情节提要中是否启用了自动布局?实际上,我不确定它是否返回到原始位置,但它肯定会跳转到其他位置。有关d的问题,请参见我的编辑。当第二个动画块启动时,它会跳转。我使用的代码与您相同,无法复制您得到的错误。我使用的是一个按钮,但这并不重要,因为它仍然是UIView,它会慢慢下降,然后放大和缩小。是否确实不将视图从动画块外部移动到某个位置?由于视图立即处于上一个动画指定的位置,最终用户只需花费时间即可看到动画。非常确定。另外,我刚刚修复了一个错误
uiviewmanimationcurveeasein
应该是
uiviewmanimationoptioncurveeasein
…但这仍然无法修复它=(然后我不知道怎么回事。最后,我会用不同的视图检查同一个动画,如按钮或标签,甚至是在动画之前创建的图像视图。如果旧视图不能按预期工作,如何创建它?每次对新视图应用一个函数,然后看看发生了什么