![](/img/trans.png)
[英]CATransaction completion block being called immediately when animation is added to subview
[英]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.