iOS開發獲取tableView,collectionView reloaddata 執行結束佈局生效時機

   在進行iOS開發的過程中,常常需要獲取到UITableView,UICollectionView執行reloaddata結束以後佈局生效的時機,我這邊的需求是獲取這個時機進行展示打點。
之前對於這兩個時機的捕獲分別是用瞭如下的方法
UITableView:
在這裏插入圖片描述
UICollectionView:
在這裏插入圖片描述
通過查看官方文檔可以知道這些方法的目的和我的並不一致,在項目的一些複雜頁面就會出現這樣或者那樣的兼容,佈局異常問題。

爲了解決這個問題必須要思考一個問題,爲什麼執行了reloaddata後沒有立即執行刷新UI的操作?如何纔可以做到reloaddata以後立即刷新UI。
參考如下文章:
《setNeedsLayout與layoutIfNeeded的區別》
我們知道執行了reloaddata後,實際告訴了系統有待刷新的東西,需要等到下個runloop週期纔可以刷新。所以我們在實際的操作中執行完了reloaddata後並不能立即獲取刷新後的狀態。爲了立即獲取我們首先要強制標記一下有待刷新的東西,同時立即刷新。以tableView爲例,具體代碼如下:

[self.tableView reloaddata];
[self.tableView setNeedsLayout];
[self.tableView layoutIfNeed];

歡迎大家多多批評指正。
更多幹貨文章,歡迎掃描二維碼關注公衆號
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章