UIView的动画帧变化不平滑,导致出现弹跳效果。

8

我正在尝试对一个UIView的帧更改进行动画处理,其中原点和大小都会发生变化。但是动画效果不够平滑,有一种弹跳的感觉。我正在使用以下代码进行操作:

[UIView
    animateWithDuration:0.5
    animations:^{
        self.view.frame = newFrame;
    }];

看起来大小会先快速变化,然后在动画的指定持续时间内,原点会发生变化,最终导致反弹效果。我该如何使其看起来更顺畅?

2个回答

12

您可以尝试更改动画曲线,也许尝试使用线性曲线。

dispatch_async(dispatch_get_main_queue(), ^{
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationCurve:UIViewAnimationCurveLinear];
    self.view.frame = newFrame;
    [UIView commitAnimations];
});

我已经尝试过使用UIViewAnimationCurveLinear,但它不起作用。大小立即改变,然后位置改变的动画开始。 - Soumya Das
你尝试过使用整个代码块吗?我刚刚尝试了一下 - 大小和起点同时进行动画,非常流畅。 - Mellson
1
现在明白了,我必须分别对所有子视图进行动画处理,否则会出现弹跳效果。谢谢。 - Soumya Das
这不会改变self.view的大小,只是移动它。 - coolcool1994

3

通过单独为每个子视图动态变换帧的方式进行动画处理,使其变得非常平滑。谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接