我以不同的速度以x和y方式移动物体。我正在使用计时器,每个间隔(0.01)调用函数移动对象(例如):
image.center = CGPointMake(image.center.x-1, image.center.y-2);
一切正常。但它并不像我怀疑的那样顺利。还有其他方法可以使ImageView更顺畅吗?我听说定时器不是最好用的。有没有办法用当前时间来做?
答案 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];
}];