移动ImageView流畅

时间:2014-03-06 13:25:01

标签: ios iphone objective-c imageview

我以不同的速度以x和y方式移动物体。我正在使用计时器,每个间隔(0.01)调用函数移动对象(例如):

 image.center = CGPointMake(image.center.x-1, image.center.y-2);

一切正常。但它并不像我怀疑的那样顺利。还有其他方法可以使ImageView更顺畅吗?我听说定时器不是最好用的。有没有办法用当前时间来做?

4 个答案:

答案 0 :(得分:0)

你应该使用动画。例如UIView方法

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations

NSTimer在您预期的那一刻不会完全发射。系统可以向前或向后移动一点。原生动画也使用子像素平滑。

答案 1 :(得分:0)

尝试使用它:

[UIView animateWithDuration:duration animations:^{
   //set final center
}];

或将间隔更改为~0.0416。

答案 2 :(得分:0)

也许你可以这样做:

CGPoint endCenter = CGPointMake(x, y);
[UIView animateWithDuration:animationDuration
                         animations:^{
                             image.center = endCenter;
                         }];

此外,如果你想将它移动到某个起始点x,y,你可以这样做:

CGRect endFrame = CGRectMake(x, y, image.frame.size.width, image.frame.size.height);
[UIView animateWithDuration:animationDuration
                         animations:^{
                             image.frame = endFrame;
                         }];

查看official documentation以更好地控制动画。

答案 3 :(得分:0)

最好使用Animation

[UIView animateWithDuration:2.0
                      delay:0.0
                    options:UIViewAnimationOptionCurveLinear
                 animations:^{
                     image.center = CGPointMake(image.center.x-1, image.center.y-2);
                 }completion:^(BOOL finished){
                     [UIView setAnimationRepeatCount:-1];
                 }];