![](/img/trans.png)
[英]app starts ignores user interaction events when i call animateWithDuration:delay:options:animations:completion:
[英]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參數中設置此常量。
文檔是你的朋友:)
在animateWithDuration下:動畫:
“在動畫期間,對於要動畫的視圖暫時禁用用戶交互。(在iOS 5之前,對整個應用程序禁用用戶交互。)”
當然,對於動畫視圖下的所有視圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.