簡體   English   中英

iOS-UIView動畫的限制?

[英]iOS - limit on UIView animate?

所以我正在制作一個簡單的瑣事游戲,並且我的timerView隨着時間的流逝而縮小。 當用戶選擇答案時,它需要立即停止縮小-它必須非常敏感。 我給用戶每個問題10秒的時間。 最初,我會設置10次動畫(持續時間為1.0f),在上一個動畫的完成塊中調用動畫的下一個“段”。 在完成模塊中,我將檢查用戶是否點擊了答案,如果是,則不要繼續進行搜索。 該解決方案運行良好,除了它不是很響應,因為它是每秒進行的-用戶在第二段的開頭點按一個答案,並且該條具有明顯的延續性。

我對該問題的解決方案是改為進行1000次動畫調用,持續時間為0.01f。 完成此操作后,響應就到位了-當我點擊一個答案時,視圖就會停止動畫顯示-但是問題是,這實際上不是10秒,而是需要20秒鍾。

那么問題1:animateWithDuration可以正確處理的最小時間間隔是多少?

問題2:是否有更好的方法來完成我要完成的工作?

問題二:肯定有更好的方法,看看CADisplayLink

使用它可將您的視圖每幀縮小一點,並在需要時結束顯示鏈接

響應速度最快的方法是:用戶點擊答案,您在觸摸回調中做出響應,刪除動畫。 您可以通過CALayerremoveAllAnimations方法刪除動畫

另一種方法是使用線性時序將單個動畫設置為縮小視圖,然后將視圖圖層的速度設置為0以暫停動畫。 將圖層的速度設置為0時,動畫會立即暫停。

之所以可行,是因為在幕后,UIView動畫實際上在視圖的圖層上創建並安裝了CAAnimation對象。 就像CAAnimation一樣,可以暫停和繼續運行中的UIView動畫。

我在github上有一個名為KeyframeViewAnimations (鏈接)的項目,該項目使您可以使用滑塊來回暫停,繼續或“擦洗” UIView和CAAnimations。 您可以使用該技術。 棘手的一點是要弄清楚動畫有多遠。

暫無
暫無

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

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