2011-05-06 49 views
2

我在我的應用程序中實現了一個簡單的動畫。我通過使用CABasicAnimation的四個圖像幀之間的交叉淡入來實現動畫,其具有from和value值設置爲(id)(myimage.CGImage)。該動畫獨立於CALayer,但在自己的小型子視圖中滾動彈出的UITextView時,在幀混合過程中文本滾動非常乾燥,並在滾動時暫停動畫。將動畫放在自己的線程中是否可以緩解問題,或者這僅僅是由Core Animation完成的複雜操作?在CABasicAnimation運行時,Laggy在UITextView中滾動

感謝您的幫助!

+0

我繼續前進,並將動畫添加到單獨的線程,但它似乎沒有使任何更流暢。我錯過了什麼嗎?我想現在我的問題是UI動畫可以發送到一個單獨的線程,或者他們總是在主線程中運行? – ThisDarkTao 2011-05-07 08:21:19

+0

由於我看到類似的問題,並希望這個問題得到解答,我提供了一個獎勵。 – DarkDust 2011-05-09 06:46:10

+0

+1有類似的問題,希望有很好的答案。 – 2011-05-09 09:28:45

回答

3

您可以將UI動畫發送到單獨的線程,但對應用程序的UI的任何實際更新始終由主線程處理/繪製。所以從這個意義上講,我認爲增加額外的線程是不會有幫助的,特別是如果你已經嘗試過,並且仍然不能給出可接受的結果。

我能想到的唯一可能會幫助的是使用OpenGL渲染動畫而不是Core Animation。這將從圖片中抽取一個完整的抽象層,並且應該加速一些結果。當然,它也可能需要更多的代碼來完成同樣的事情,所以肯定會有一個折衷。

+0

好吧,從幾乎所有的角度來看它,並試圖使這項工作,我認爲它是安全的,假設沒有人真的有任何答案。猜猜我只需要重新考慮應用程序並刪除UITextView。有點惱火蘋果沒有解決這個問題。 – ThisDarkTao 2011-05-11 09:17:57