用循环口吃移动UIImageView

时间:2015-04-19 16:15:22

标签: ios objective-c uiimageview

我有一个代码,它以随机的间隔创建一个UIImageView,然后调用一个循环动画的方法将它们移动到屏幕上。

//This is called after an image is created
-(void)loopImage:(UIImageView *)image {
    [self moveImage:image];

    if (image.frame.origin.y > 300) {
        [image removeFromSuperview];
    } else {
        [self performSelector:@selector(loopImage:) withObject:image afterDelay:1.0f / 60.0f];
    }
}

-(void)moveImage:(UIImageView *)image {
    image.frame = CGRectMake(image.frame.origin.x, image.frame.origin.y + 3, 20, 20);
}

这完全没问题,因为它做了我想做的事情,但图像的移动并不顺畅。有时候,在屏幕上行程中,它会断断续续并向后移动几个像素(不仅仅是在模拟器上,而是在我的测试设备上,还有iPhone 5s)。有什么方法可以顺畅地将图像向下移动到屏幕上,但仍能检查碰撞吗?

1 个答案:

答案 0 :(得分:1)

我认为这里最简单正确的方法是使用[UIView animateWithDuration]。你认为使用什么并不能保证视图循环中正确的执行顺序。