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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值