最近,我使用動畫UIImageView自定義UITableViewCell來播放動畫GIF。在製作它的過程中,我發現在單元重新使用後不會顯示動畫。 看來UIImageView受[self prepareForReuse]
的影響。當我調試它時,我可以得到以下信息。爲什麼在調用[super prepareForReuse]後,UIImageView中的「動畫」屬性在自定義UITableViewCell上被刪除?
** before calling [super prepareForReuse] **
(lldb) po self.testImageView
<UIImageView: 0x1ab681c0; frame = (39 0; 78 61); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; animations = { UIImageAnimation=<CAKeyframeAnimation: 0x1ab77870>; }; layer = <CALayer: 0x1ab68b60>> - (null)
** after calling [super prepareForReuse] **
(lldb) n
(lldb) po self.testImageView
<UIImageView: 0x1ab681c0; frame = (39 0; 78 61); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x1ab68b60>> - (null)
正如它所顯示的,「動畫= {UIImageAnimation =;};」已移除。
幸運的是,我可以通過製作一個UIImage的新實例並將其設置爲UIImageView作爲解決方法來解決該問題。爲了解決這個問題,重新創建一個UIImage實例不是爲了重用已經設置爲UIImageView的實例。
無論如何,我真正想知道的是爲什麼prepareForReuse
方法刪除有關動畫的信息。 請讓我知道隱藏方法的內部重用邏輯。
我已經做了,但沒有工作。似乎關於動畫的信息被刪除了。所以,雖然我在'prepareForReuse'之後調用了'startAnimating',但它不起作用。 –
@KyokookHwang我試過這個,我似乎沒有得到你提到的問題。我在'[super prepareForReuse]'之後的圖像視圖中調用了'startAnimation'方法,它似乎工作正常。 – Adithya
@KyokookHwang一旦我開始動畫,imageview'animatingImages'數組中的'UIImage'實例也完好無損。 – Adithya