2012-10-11 50 views
0

我有UITableViewCell的子類,我希望在事件發生時提供一些自定義動畫。我一直在努力弄清楚爲什麼我繼續接收相同的動畫(我假設UITableViewRowAnimationFade,單元格會消失,而下面的單元格會滑動),最後我決定深入研究這個問題。我發現,當我將單元格的大小設置爲小於320(或者我假設它完全等於當前屏幕的大小)時,它將回退到此默認動畫。如果寬度小於屏幕大小,UITableViewCell無法正常動畫

我的自定義單元格就像是一個浮動框(我有每節1個細胞,有許多段),我把它像這樣

self.frame = CGRectMake(5, self.frame.origin.y, 310, self.frame.size.height); 
self.contentView.frame = CGRectMake(0, 0, 310, self.frame.size.height); 

但每次我得到默認的動畫。如果我將其更改爲

self.frame = CGRectMake(5, self.frame.origin.y, 320, self.frame.size.height); 
self.contentView.frame = CGRectMake(0, 0, 320, self.frame.size.height); 

不同的動畫工作得很好。

有沒有人有任何線索爲什麼會這樣?我想知道它是否打算以這種方式工作,我需要改變我的單元格設置的方式或者是否有解決方法。

謝謝。

編輯:截屏

enter image description here

+2

我不確定混淆單元格的框架或單元格的contentView框架是個好主意。爲什麼不把自己的視圖添加到單元格的contentView?然後,您可以根據需要調整視圖的大小。也許這會有所幫助。 – rmaddy

+0

我的確確實生成了一堆我自己的視圖,並將它們添加到contentView中,但正如我之前所說的,我試圖使單元格自己成爲浮動框。你想讓我上傳一張他們看起來像是什麼的屏幕截圖,以供進一步澄清。 – TheJer

+0

我打算提供@ rmaddy的解決方案,但現在沒有理由。使單元格的contentView透明,不要使用它的文本標籤等,並將你的視圖添加到contentView。這是如何完成的。人們浪費大量時間嘗試修改單元本身,Apple最終會覆蓋你正在做的事情。我現在正在處理這個完全相同的問題 - 子視圖將動畫移動等。在系統內工作,它會很快落實到位。此外,隆達rmaddy的評論(就像我做的那樣!) - 它是最好的建議! –

回答

1

您做出contentView.background色澤鮮明,所以細胞本身是完全透明的。然後,您將視圖添加到具有背景顏色的contentView中,該視圖的框架會在左側和右側(也可能是頂部和底部)將其插入。 [我現在正在做幾乎完全相同的事情 - 爲我的應用在商店中添加一項新功能]。讓我們調用這個視圖containerView(因爲它將包含所有其他視圖)。您可能需要設置clipsContentsToBounds屬性,以便任何子視圖不可能「伸出」它。

然後,您可以將其他視圖添加到容器視圖。由於我總是回收單元格,因此您希望在所有容器子視圖上設置標籤值,以便您可以輕鬆找到它們並設置適當的屬性(圖像,文本,顏色等)。

+0

我只是想從我的設置中添加到此。如果你的自定義視圖添加了任何邊框或線條(我的子圖層),你需要重寫'setSelected:'和'setHighlighted:'並設置正確的句柄,因爲它們不會在點擊時被淡出。此外,藍色突出顯示仍然會覆蓋整個屏幕,並且我假設沒有辦法解決這個問題,因爲我們沒有搞亂實際的contentView? – TheJer

+0

我會禁用單元格高亮顯示,並在可見內容視圖中用背景顏色僞造它。在我的情況下,細胞不能被選中,所以我從來沒有想過這個。 –

相關問題