我现在很困惑。
当值为动画动作时,此条件正常。 但是当没有立即调用值时就说明了。
我不知道两者之间是否有任何区别。
- (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];
}
}
}
}];
}
答案 0 :(得分:0)
这个块工作序列首先称为动画块然后是完成块,但是如果你设置了动画NO,那么它立即调用完成。
我不明白为什么你这么困惑?
答案 1 :(得分:0)
动画块中的代码称为循环。如果在动画块中设置了视图的帧更改,它将作为动画执行,需要一段时间来执行您可以配置的代码。但是如果你在完成块中设置此视图的帧更改,这将在动画完成后单次执行。