[英]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.