在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python  C  iOS/ UITableView使用reloadRowsAtIndexPaths導致動畫有

UITableView使用reloadRowsAtIndexPaths導致動畫有重影,怎么解決?

我在項目里用到了一個UITableView,這個UITableView有3個cell。這里有個需求是對第一個cell進行刷新,刷新時會改變這個cell的高度。在改變第一個cell高度的同時,第2,3個cell會有移動,這個移動需要有動畫效果。我用reloadRowsAtIndexPaths來實現(xiàn)這個需求,但是發(fā)現(xiàn)在動畫進行的過程中,第3個cell會有重影。動畫結(jié)束時,重影消失。

代碼如下,這里用了beginUpdates, endUpdates:
[self beginUpdates];
[self reloadRowsAtIndexPaths ...]; // 這里只刷第一個cell
[self endUpdates];

通過debug發(fā)現(xiàn),cellForRowAtIndexPath:會進2次。第1次是刷第一個cell,第2次是刷第3個cell。
這里就是動畫重影的原因所在。我并沒有用reloadRowsAtIndexPaths顯式地刷第3個cell。

問題來了,系統(tǒng)是不是在reloadRowsAtIndexPaths的時候除了刷本身該刷的外,還會去刷其他一些并沒有顯式被刷的cell呢?還有我們應該怎么去解決這個重影問題?

回答
編輯回答
安于心

把第一個cell不要寫在cell里面, 寫在tableView.tableHeaderView,如果高度變的漸變效果的話。 直接reloadData應該可以。

2017年4月13日 04:08