UIVIew animateWithDuration线性?

时间:2013-10-23 16:12:05

标签: ios iphone objective-c animation uiview

我想动画我的多个UIImageViews线性地从A点移动到B点。

我正在使用选项:UIViewAnimationOptionCurveLinear - Apple文档说:“线性动画曲线会导致动画在其持续时间内均匀发生。”。

这是我正在使用的代码:

[UIView animateWithDuration:1.5
                              delay:0.0
                            options:UIViewAnimationOptionCurveLinear
                         animations:^{

                             //start animation of random grasses with const speed and const y
                             for (int i=0;i<45;i++){
                                 if ([self.view viewWithTag:i+100]){

                                     CGRect frameOfGrass = [self.view viewWithTag:i+100].frame;
                                     frameOfGrass.origin.y = -100;
                                     [self.view viewWithTag:i+100].frame = frameOfGrass;
                                 }}
        }
                         completion:^(BOOL finished){
                           //
  }];

注意: 每个imageView的Y位置是600-700的随机数。

但结果看起来更像是 UIViewAnimationOptionCurveEaseOut - “缓出曲线会导致动画快速开始,然后在完成时变慢。”因为所有图像都在和。减速。

以下是app运行的截图:

enter image description here enter image description here enter image description here enter image description here

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

所有草图的行进距离都不相同。记住v = d / t。在您的情况下,所有草图像将以不同的速度传播,因为它们需要同时达到y.origin = -100。

试试这个:

frameOfGrass.origin.y = frameOfGrass.origin.y - 600;

这应该使所有草图像在同一时间内移动相同的距离。