如何解決UICollectionView不能下拉刷新問題

最近遇到UICollectionView顯示的所有單元格的高度總和不超過屏幕高度,結果遇到無法下拉刷新,監控不到滾動時間就是把滾動條設置上去也沒有任何效果。使用UITableView顯示數據下拉刷新正常。
後來找度娘和查看UICollectionView的接口文檔。發現UICollectionView默認的alwaysBounceVertical屬性是NO,當該屬性爲NO時,顯示的單元格總高度和分區頭尾高度的和小於表格的高度時,禁止UICollectionView上下滑動。
我設置_collectionView.alwaysBounceVertical = YES;後終於可以觸發下拉刷新組件進行下拉刷新了。

@property(nonatomic) BOOL bounces; // default YES. if YES, bounces past edge of content and back again
@property(nonatomic) BOOL alwaysBounceVertical; // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag vertically
@property(nonatomic) BOOL alwaysBounceHorizontal; // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag horizontally
用來控制滾動視圖是否反彈,bounces默認是YES,當它爲NO的時候,其他兩個屬性值設置無效,滾動視圖無法反彈;只有當bounces是YES的時候,其他兩個屬性設置纔有效,alwaysBounceVertical設置垂直方向的反彈是否有效,alwaysBounceHorizontal設置水平方向的反彈是否有效;
UITableView默認情況下alwaysBounceVertical是YES,alwaysBounceHorizontal是NO;
UIScrollView和UICollectionView默認情況下alwaysBounceVertical和alwaysBounceHorizontal都是NO;只有當內容視圖的尺寸超過了自己的bounds的尺寸的時候,相應方向上反彈屬性纔會自動設置爲YES;
簡言之,UITableView和UIScrollView、UICollectionView的alwaysBounceVertical默認屬性相反。

因此,在編程中,實現滾動視圖的下拉和上拉刷新的時候,就要相應的打開alwaysBounceVertical屬性,才能實現下拉和上拉功能;例如UICollectionView頁面只有一條數據的時候,內容視圖沒用佔據到UICollectionView的整個bounds,當前就無法滾動,這個時候就要設置alwaysBounceVertical爲YES,才能在垂直方向實現反彈進而實現上下拉刷新功能。

注意:你計算的單元格總高度計算如果計算的比實際表格小一些(小一個像素也可以),你設置alwaysBounceVertical屬性爲NO,也能下拉刷新。若你的數據不顯示滿屏,不想觸發下拉刷,一定要設置的表格高度不能比單元格的總高度小。

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