我有一个按钮和一个图像。按住按钮时,我希望图像快速在屏幕上播放。现在,我按住它之后,我松手后它就会移动。我需要它在一定时间后开始移动,并在我放手时停止。这是我所拥有的:
- (IBAction)buttonDown:(id)sender
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
x = x + 100;
}
我有一个按钮和一个图像。按住按钮时,我希望图像快速在屏幕上播放。现在,我按住它之后,我松手后它就会移动。我需要它在一定时间后开始移动,并在我放手时停止。这是我所拥有的:
- (IBAction)buttonDown:(id)sender
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
x = x + 100;
}
使用下面的代码,你必须按下 3 秒来移动 _imageView,然后图像开始移动,当你释放按钮时,图像停止。
- (IBAction)pushToMove:(id)sender {
[self performSelector:@selector(move) withObject:nil afterDelay:3.0];
}
- (void)move
{
_nt = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(goRight)
userInfo:nil
repeats:YES];
}
- (void)goRight
{
_imageView.frame = CGRectMake(_imageView.frame.origin.x + 10, _imageView.frame.origin.y,
_imageView.frame.size.width, _imageView.frame.size.height);
}
- (IBAction)stop
{
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(move) object:nil];
[_nt invalidate];
}
我把这个示例项目放到了 GitHub 上。您可以下载并运行它。
这可以通过简单地喜欢按钮的 touch down 属性而不是内部的 touch up 来在界面构建器中完成。在代码中它看起来像这样:
[myButton addTarget:self action:@selector(myMethod) forControlEvents:UIControlEventTouchDown];
除此之外,您还需要对动画进行一些状态检查,并UIViewAnimationOptionBeginFromCurrentState
用作选项来帮助它在用户再次按下按钮时从中断的地方继续。