簡體   English   中英

為什么-animateWithDuration:delay:options:animations:completion:阻止UI?

[英]Why is -animateWithDuration:delay:options:animations:completion: blocking the UI?

我一直認為Core Animation在后台執行動畫。 當我運行此代碼時,我的UI交互將被阻止,直到動畫結束:

[UIView animateWithDuration:4.5 
                      delay:0 
                    options:options 
                 animations:^{
                    oldView.alpha = 0;
                    newView.alpha = 1;
                 }  
                 completion:^(BOOL finished) {
                    if (finished) {
                        [oldView removeFromSuperview];
                    }
                 }];

就像你可以看到持續時間很長,因此可以清楚地看到UI交互在動畫時被阻止。

當動畫開始時,UI交互開始被阻止,並且在動畫結束時結束被阻止。

有沒有辦法同時啟動UIView動畫,以便不阻止UI交互?

編輯澄清:我知道UI被阻止,因為我不能與屏幕上的任何控件交互為什么這個動畫運行。 那些其他控件與動畫內容無關,並且不在視圖層次結構中的同一分支上。 此動畫運行時,將阻止整個UI。 當我將其設置為10秒時,UI會在動畫運行時被阻止10秒。 在iPhone 4上使用iOS 4.2進行測試。

查看UIView的文檔,我在該方法的討論部分中找到了這個:

在動畫期間,對於要動畫的視圖,臨時禁用用戶交互。 (在iOS 5之前,對整個應用程序禁用用戶交互。)如果希望用戶能夠與視圖交互,請在options參數中包含UIViewAnimationOptionAllowUserInteraction常量。

因此,如果您希望繼續允許用戶交互,則必須在options參數中設置此常量。

文檔是你的朋友:)

UIView類參考

animateWithDuration下:動畫:

“在動畫期間,對於要動畫的視圖暫時禁用用戶交互。(在iOS 5之前,對整個應用程序禁用用戶交互。)”

當然,對於動畫視圖下的所有視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM