在UIImageView动画中应用一些缓动

时间:2013-07-03 00:29:17

标签: ios objective-c

我正在使用以下内容将UIImageView幻灯片向前移动一点,然后再向后滑动以获得视差滚动效果。

代码:

[UIView animateWithDuration:0.2f animations:^{
    spendrBckGrnd.frame = CGRectMake(spendrBckGrnd.frame.origin.x + 20, 0, spendrBckGrnd.frame.size.width, spendrBckGrnd.frame.size.height);
}];
[UIView animateWithDuration:0.4f animations:^{
    spendrBckGrnd.frame = CGRectMake(spendrBckGrnd.frame.origin.x - 80, 0, spendrBckGrnd.frame.size.width, spendrBckGrnd.frame.size.height);
}];

我想知道我如何在动画中应用一些缓动,如果只是突然快速地来回滑动。我想轻松进出滑动动画。

3 个答案:

答案 0 :(得分:0)

在UIView动画上查看本教程 http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_uiview-animations/

UIView有一个方法

//   [UIView animateWithDuration:(NSTimeInterval) delay:(NSTimeInterval) options:(UIViewAnimationOptions)animations:^(void)animations completion:^(BOOL finished)completion];
typedef enum {
        UIViewAnimationCurveEaseInOut,         // slow at beginning and end
        UIViewAnimationCurveEaseIn,            // slow at beginning
        UIViewAnimationCurveEaseOut,           // slow at end
        UIViewAnimationCurveLinear
    }
    [UIView animateWithDuration:0.6f
                delay:0.1f
                options:UIViewAnimationCurveEaseInOut
                animations:^{
                        [starView setCenter:CGPointMake(0, 0)];
                        [starView setAlpha:0.0f];
                }
                completion:^(BOOL finished){
                            [starView removeFromSuperview];
                            points++;
                }
    ]; 

同时在github上检查这个控件,使用自定义容器视图创建视差效果,就像Path的时间轴的顶视图一样。 https://github.com/modocache/MDCParallaxView

答案 1 :(得分:0)

这样可以解决问题:

[UIView animateWithDuration:0.2f delay:0 options:UIViewAnimationOptionCurveEaseInOut       animations:^(void){
//do your animations
} completion:^(BOOL finished){

}];

答案 2 :(得分:0)

在第一个动画块完成后,您需要执行第二个动画块

[UIView animateWithDuration:0.2f animations:^{
    spendrBckGrnd.frame = CGRectMake(spendrBckGrnd.frame.origin.x + 20, 0, spendrBckGrnd.frame.size.width, spendrBckGrnd.frame.size.height);
} completion:^{
    [UIView animateWithDuration:0.2f animations:^(BOOL finished){
        spendrBckGrnd.frame = CGRectMake(spendrBckGrnd.frame.origin.x - 80, 0, spendrBckGrnd.frame.size.width, spendrBckGrnd.frame.size.height);
    }];
}];