繁体   English   中英

动画完成称为立即完成

[英]animation completion called immediately completion

我现在很困惑。

当值为yes的动画动作时,此条件是正常的。 但是说明没有值完成立即调用的情况。

我不知道两者之间是否有任何区别。

- (void)setDimView : (UIView*)targetView state:(BOOL)state
{
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    UIView *dim = [[UIView alloc]initWithFrame:screenRect];
    dim.tag = TAG;
    if (state)
    {
       dim.alpha = 0.0;
    }


    [UIView transitionWithView:dim duration:0.5 options:UIViewAnimationOptionCurveEaseOut animations:^ {
        if (state)
        {
            [targetView setHidden:NO];
            [targetView addSubview:dim];

            dim.backgroundColor = [UIColor blackColor];
            dim.alpha = 0.6;
        }
        else
        {
            dim.alpha = 0.0;

        }
    }completion:^(BOOL finished) {
        if (!state)
        {
            for (UIView *subview in [targetView subviews])
            {
                if (subview.tag == TAG)
                {
                    [subview removeFromSuperview];
                    [targetView setHidden:YES];
                }
            }
        }
    }];
}

该块的工作顺序首先是动画块,然后是完成块,但是如果您将动画设置为NO,则立即调用完成。

我不明白你为什么这么困惑吗?

动画块和完成块之间的区别

动画块中的代码称为循环。 如果在动画块中设置了视图的帧更改,它将作为动画执行,需要一段时间来执行您可以配置的代码。 但是,如果要在完成块中设置该视图的帧更改,则它将在动画完成后一次拉伸。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM