1
我想讓UIView在觸摸屏幕上離開屏幕,並在觸摸之後稍微延遲迴來。到目前爲止:UIView動畫取消
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == myMainView)
{
[disappearingView.layer removeAllAnimations];
[UIView animateWithDuration:0.5
delay:0
usingSpringWithDamping:0.7
initialSpringVelocity:0.2
options:UIViewAnimationOptionBeginFromCurrentState
animations:^
{
disappearingView.transform = CGAffineTransformMakeScale(0, 0);
}
completion:^(BOOL finished)
{
}];
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == myMainView)
{
[UIView animateWithDuration:0.5
delay:1
usingSpringWithDamping:0.7
initialSpringVelocity:0.2
options:UIViewAnimationOptionBeginFromCurrentState
animations:^
{
disappearingView.transform = CGAffineTransformMakeScale(1, 1);
}
completion:^(BOOL finished)
{
}];
}
}
上面的代碼到目前爲止工作正常。但是,如果用戶在1秒延遲到期之前擡起手指並再次觸地,即使觸地下降,消失的視圖仍然會恢復。如果你隨機觸摸,動畫非常不一致。
我希望視圖在1秒後回來,並且根本沒有任何接觸。
我正在嘗試這個過程。 DELAY的最佳做法是什麼?我應該通過延遲動畫來做到嗎?或者做[self performSelector:@selector(touchUpAnimations)withObject:nil afterDelay:1]; ? – Gizmodo 2014-08-30 18:48:39
我不認爲這有很大的區別。我的偏好是讓動畫延遲(正如你現在所做的那樣),但以另一種方式進行則會避免動畫「無所作爲」,如果發生了另一次觸摸。 – pbasdf 2014-08-30 19:30:44