如何解决UICollectionView不能下拉刷新问题

简介: 如何解决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,也能下拉刷新。若你的数据不显示满屏,不想触发下拉刷,一定要设置的表格高度不能比单元格的总高度小。


目录
相关文章
|
7月前
|
JavaScript
原生js如何实现上拉加载下拉刷新?
原生js如何实现上拉加载下拉刷新?
47 0
|
JavaScript Linux
【unapp】上拉加载,下拉刷新
【unapp】上拉加载,下拉刷新
106 0
|
小程序
小程序-uniApp:区域滚动、下拉刷新、上拉加载更多
小程序-uniApp:区域滚动、下拉刷新、上拉加载更多
986 0
|
JavaScript
每日一题:如何实现上拉加载,下拉刷新?
每日一题:如何实现上拉加载,下拉刷新?
285 0
每日一题:如何实现上拉加载,下拉刷新?
|
iOS开发
iOS开发 - 让tableView不能下拉刷新,可以上拉加载
iOS开发 - 让tableView不能下拉刷新,可以上拉加载
322 0
|
iOS开发
iOS 开发 - tableView内嵌scrollView时,在plus上滑动scrollView时和tableView有冲突
iOS 开发 - tableView内嵌scrollView时,在plus上滑动scrollView时和tableView有冲突
177 0
|
JavaScript
原生js实现上滑加载,下拉刷新
这是手机端常见的一个功能,可能很多人都是用框架或者插件实现。 这里,我试着用原生js实现。 这样能更明白原理与底层实现
295 0
原生js实现上滑加载,下拉刷新
|
iOS开发
iOS UITableViewCell嵌套CollectionView,tableview和collectionview同时滑动bug修复
iOS UITableViewCell嵌套CollectionView,tableview和collectionview同时滑动bug修复
997 0
|
iOS开发
iOS ScrollView嵌套tableview左右滑动时禁止上下滑动
iOS ScrollView嵌套tableview左右滑动时禁止上下滑动
2103 0
|
Android开发
关于DialogFragment全屏方案
DialogFragment默认情况下就算给内部布局设置match_parent也不是全屏。于是网上就有很多的方案,讲讲我所遇到的坑。 1.给window设置高度 很多地方都是用这样的写法 Window dialogWindow = getDialog().
1763 0