UIAnimation非线性效应

时间:2014-05-01 22:11:32

标签: ios objective-c animation user-interface

所以我想做一个视图逐渐淡出的UI动画。现在我有类似的东西

[UIView animateWithDuration:2.0f
    animations:^{
        myView.alpha = 0.0f;
    }
 ];

现在,在这2秒的过程中,视图将逐渐淡出。但是我想让它淡出是非线性的。例如,我希望它开始慢慢消失,然后随着时间的推移逐渐消失。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

使用带有选项参数的较长形式的animateWithDuration方法,例如animateWithDuration:delay:options:animations:completion:

您可以提供的其中一个选项是时间曲线,如UIViewAnimationOptionCurveEaseInOut。

您的选择

 UIViewAnimationOptionCurveEaseInOut            = 0 << 16,
 UIViewAnimationOptionCurveEaseIn               = 1 << 16,
 UIViewAnimationOptionCurveEaseOut              = 2 << 16,
 UIViewAnimationOptionCurveLinear               = 3 << 16,

如果使用CAAnimation而不是UIView动画,您还可以使用描述所需定时功能的贝塞尔曲线的控制点创建自己的自定义定时功能。但是,CAAnimation使用起来更复杂,文档记录也不多。

答案 1 :(得分:0)

[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
    myView.alpha = 0.0f;
} completion:nil];

或者选择您喜欢的时间曲线,而不是UIViewAnimationOptionCurveEaseInOut

答案 2 :(得分:0)

你必须要求“缓入”时间曲线,其中动画开始缓慢并以线性结束。请尝试以下代码,

[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn animations:^{
    myView.alpha = 0.0f;
} completion:nil];

如果能解决您的问题,请告诉我。