我注意到,使用UIView類方法的UIView動畫似乎或多或少地把程序放在「暫停」上直到它們完成。UIView動畫延遲
有沒有辦法讓動畫開始,例如,持續3秒,當它是動畫時,程序的其他方面仍在運行,接受觸摸事件等?
我注意到,使用UIView類方法的UIView動畫似乎或多或少地把程序放在「暫停」上直到它們完成。UIView動畫延遲
有沒有辦法讓動畫開始,例如,持續3秒,當它是動畫時,程序的其他方面仍在運行,接受觸摸事件等?
是的,UIKit默認阻止動畫過程中的交互。要覆蓋,設置UIViewAnimationOptionAllowUserInteraction
:
[UIView animateWithDuration:0.3 delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^
{
// ...
} completion:NULL];
謝謝先生。它做到了。 – johnbakers 2011-06-13 01:57:18
UIKit不是線程安全的,所以所有這些動畫必須在主線程上發生 - 而不是在後臺線程上。爲了從蘋果文檔引用:
線程
注意事項手法 到應用程序的用戶界面 必須在主線程上發生。因此, 您應該始終調用 中的UIView類的方法,該代碼在 應用程序的主線程中運行。 唯一需要的時候可能不是嚴格的 是創建視圖 對象本身;但所有其他的 操作應該發生在主線程 線程上。
那些其他方面可以在另一個線程(而不是默認UI線程等)運行,但我需要看到你的代碼提示別的。 – Tom 2011-06-13 01:07:58
在動畫過程中線程和運行循環都不會被阻塞,只需觸摸事件即可。 (並且僅在默認情況下) – 2011-06-13 01:20:29
啊,好的。這可能是我所看到的。那麼在動畫過程中你無法接收到觸摸事件?如果一個小UIView在幾秒鐘內進行阿爾法淡入淡出,程序將不會接受屏幕上其他任何地方的觸摸事件? – johnbakers 2011-06-13 01:22:04