如何中断UIView动画

Dav*_*man 2 objective-c uiview ios

我已经尝试过关于其他几个线程的建议,但他们的方法在这种情况下似乎不起作用.这是我的情况:

我有2个滚动视图."滚动视图A"具有在滚动"滚动视图A"时淡入和淡出的标签.拖动"滚动视图B"时,我想立即隐藏"滚动视图A"上的标签.但是我不能打断标签的慢速淡出动画.以下是我使用的两种方法:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{

if (scrollView.tag != 1)
{
    [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionBeginFromCurrentState animations:^{

        self.liveOverlayLabel.alpha = .6;
    } completion:^(BOOL finished) {
    }];
}

else
{

    [UIView animateWithDuration:0 delay:0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionBeginFromCurrentState animations:^{

        self.liveOverlayLabel.alpha = 0;
    } completion:^(BOOL finished) {
        self.liveOverlayLabel.alpha = 0;
    }];
}
}

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{

if (scrollView.tag != 1)
{

        NSLog(@"stoppping");
    [UIView animateWithDuration:5 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{

        self.liveOverlayLabel.alpha = 0;
    } completion:^(BOOL finished) {
    }];
}
else
{
    self.liveOverlayLabel.alpha = 0;

}

}
Run Code Online (Sandbox Code Playgroud)

Dun*_*n C 7

UIView动画最终使用"隐藏"视图层上的CAAnimation对象.

要停止"动态"动画,您可以使用以下代码:

Objective-C的:

[aView.layer removeAllAnimations];
Run Code Online (Sandbox Code Playgroud)

迅速:

aView.layer.removeAllAnimations()
Run Code Online (Sandbox Code Playgroud)

我相信对于UIView动画,当动画被移除时,视图将跳转到它的结束状态.

采用全新的动画与UIViewAnimationOptionBeginFromCurrentState选项将让你添加动画开始使用在新的动画开始为起点,即时动画状态视图中的新变化新动画的其他海报的做法.

所以,如果你是从底部动画视图留给屏幕的右下方,并在中途过场动画,你发出新的UIView动画移动视图的顶部右侧,使用UIViewAnimationOptionBeginFromCurrentState选项,视图将改变方向,从中间点开始,然后开始向右上角移动.