2011-04-17 39 views
1

我把一起在一個UITableView飼料。我正在爲我的UITableViewCells添加自定義UIView,並正在繪製drawRect:(CGRect)中的單元格的所有內容。方法:(的CGRect)

這很好,當用戶點擊一個單元格時,我展開了單元格,並且子視圖上的UITableViewCell再次調用了drawRect:(CGRect),並且繪製了所有內容以反映這一點。 這對性能很好,UITableViewCell只包含一個子視圖,所有內容都直接繪製到CGContext中。現在

,我拋光料的功能,我想補充一些動畫,以使其更清楚發生了什麼用戶。

我想在單元展開之前,期間和之後做動畫。在drawRect中的做法是做一個「一次性」的方式,我明白,權衡是一樣的優勢,你沒有一堆子視圖的引用,你可以動畫等 我怎麼能去關於實施動畫?

有沒有呼籲子視圖時cellHeight改變,我可以掛接到委託方法。如果我這樣做,我必須將所有需要動畫的元素製作成子副本,然後製作動畫,刪除它們,然後在上下文中重新繪製它們。

如果我嘗試爲每個可以顯示的可想象的事件/動畫製作條件塊,我有點害怕走錯了一條錯誤的路徑,並最終失去drawRect的性能和可讀性。

希望有人能指出正確的方向。 在此先感謝。

回答

1

當調整您的細胞,這樣做是爲了動畫單元調整尺寸處理:

[tableView beginUpdates]; 
[tableView reloadRowsAtIndexPaths:... withRowAnimation:YES]; 
[tableView endUpdates]; 

現在您單元的drawRect:將呼籲動畫,您可以衡量和實施的持續時間。可能出現

一個問題,如果一個一致的幀率並不總是能夠達到,你不完成的動畫。

我想一個更好的解決方案是使用CALayer S和有動畫的繪製。