我试图做一个简单的动画,但我很难找到我在网上寻找的东西。
我希望用户点击一个按钮,从而将UIImageView(clouds01)从一个点转换到另一个点,从左上角开始,到屏幕的死点结束。
我看到的所有教程要么每次点击都要移动一次图像,要么无限地向一个方向移动图像。
我遵循了一个使用NSTimer来重复翻译方法的在线教程,但它无限制地完成,如此处所示。它只是每隔0.033秒将图像移动16 x 12,但我希望它在中间停止。
- (IBAction)animateClouds:(UIButton *)sender {
cloud01.center = CGPointMake(-512, -384);// sets cloud initial position
cloudTimer01 = [NSTimer scheduledTimerWithTimeInterval:.033 target:self selector:@selector(moveCloud01) userInfo:nil repeats:1];
if (cloudTimer01 == nil) {
cloudTimer01 = [NSTimer scheduledTimerWithTimeInterval:.033 target:self selector:@selector(moveCloud01) userInfo:nil repeats:1];
}
-(void)moveCloud01{
cloud01.center = CGPointMake(cloud01.center.x + 16, cloud01.center.y + 12);
}
有什么想法让它停止?感谢您提前获得任何建议。
答案 0 :(得分:0)
当云足够接近中心时,只需使计时器无效。
- (void)moveCloud01
{
cloud01.center = CGPointMake(cloud01.center.x + 16, cloud01.center.y + 12);
if (CGRectContainsPoint(yourCenterRect, cloud01.center))
{
[cloudTimer01 invalidate];
}
}
yourCenterRect
是CGRect
,表示中心区域。当云的中心位于此区域时,您只需停止计时器。