0
的詳細信息:奇怪的動畫與UIDynamics後延遲
- 我使用
DispatchQueue.main.asyncAfter(deadline: ...
更新UISnapBehavior
,這會導致與卡行爲管理單元(動畫)相關聯的視圖到新的snapPoint
捕捉點。 - 我想更新三個圓形視圖的
snapPoint
,其中每個視圖都堆疊在另一個的頂部。 - 我想連續更新
snapPoint
。換句話說,我想讓視圖A在t0開始動畫,在t1開始看B,在t2開始看動畫。
問題:
動畫的定時是奇異的。例如:
- 如果t0,t1和t2之間的差值爲100毫秒,它們都會完全同時捕捉到它們各自的捕捉點。
- 但是,如果t0,t1和t2之間的差值爲200毫秒,則視圖A和視圖B同時捕捉到它們各自的位置,但視圖C在完全不同的時間後捕捉到它的新捕捉點比前兩個。
- 更奇怪的是,如果t0,t1和t2之間的差異達到400毫秒,則單獨查看A animates,並查看B和C一起生成動畫。
- 最後,如果差值達到500毫秒,則每個視圖在不同的時間進行動畫處理。
這是怎麼回事?
'dispatchAfter'確實如此;在一段時間後派遣*,實際的延遲可能會更長,但不會更短。實際的延遲取決於他的系統決定做什麼。 – Paulw11
它的確如此......理論上。如果您重複上面所做的步驟,其值約爲100毫秒(0.1秒),則所有事情都完全在同一時間發生。如果您使用計時器運行相同的代碼,則動畫按預期發生。我不知道爲什麼,但是儘管人們可能期望會發生這種情況。 – josephap
說「在* 4點來看我*」和「在* 4點之後來看我*」之間的區別。在第一種情況下,我預計在那裏有權利。在第二種情況下,4:15是確定的。 – Paulw11