iOS - Swift UICollectionView横向分页的问题UICollectionView横向分页的问题

UICollectionView横向分页的问题

情况

直接看图

滚前

滚后

已经设置collectionView的isPagingEnabled为true了,可是出现了这种情况,原因就是collectionView的contentSize不够。

<UICollectionView: 0x7fc565076000; 
frame = (0 0; 375 197); 
clipsToBounds = YES; 
gestureRecognizers = <NSArray: 0x6180000557e0>; 
layer = <CALayer: 0x61000022a5a0>; 
contentOffset: {187.5, 0}; 
contentSize: {562.5, 192.25}
>

解决方案

有两种方式可以解决,数据只有11个,要分两页需要16个,那我们可以直接添加数据到16个,然后在dataSource中返回cell时进行判断及处理即可。不过对于现在来说太小题大做了,我选第二种方式~

直接修改contentSize

我自定义了一个继承于UICollectionViewFlowLayout的Layout(LXFChatMoreCollectionLayout),让UICollectionView在创建的时候使用了它

在 LXFChatMoreCollectionLayout.swift 中我们需要重写父类的collectionViewContentSize,将contentSize取出来修改为我们自己创建的newSize就可以了代码如下

override var collectionViewContentSize: CGSize {
    let size: CGSize = super.collectionViewContentSize
    let collectionViewWidth: CGFloat = self.collectionView!.frame.size.width
    let nbOfScreen: Int = Int(ceil(size.width / collectionViewWidth))
    let newSize: CGSize = CGSize(width: collectionViewWidth * CGFloat(nbOfScreen), height: size.height)
    return newSize
}

注:ceil函数的作用是求不小于给定实数的最小整数。ceil(2)=ceil(1.2)=cei(1.5)=2.00

效果

至于如何让item水平布局,请参考《iOS - Swift UICollectionView横向分页滚动,cell左右排版》

附上相关项目:Swift 3.0 高仿微信

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏BY的专栏

iOS定时器,你真的会使用吗?前言正文结语

3715
来自专栏iOS 开发杂谈

浅析 NSTimer 和 CADisplayLink 内存泄漏

谈论 NSTimer & CADisplayLink 内存泄漏,要理解 NSTimer & CADisplayLink 的基础概念,下面通过一个倒计时的实现的 ...

1061
来自专栏清墨_iOS分享

iOS UIStepper实现数量递增递减

很多app都有这样的功能:(大家一看就能懂吧) ? DBF08F90-FB6B-424B-9240-AB893A576065.png 这个功能我们要实现的话,估...

2875
来自专栏青玉伏案

iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流

上篇博客的实例是自带的UICollectionViewDelegateFlowLayout布局基础上来做的Demo, 详情请看《iOS开发之窥探UICollec...

21210
来自专栏LinXunFeng的专栏

iOS - 关于NSTimer的循环引用

943
来自专栏mukekeheart的iOS之旅

iOS学习——浅谈RunLoop

  RunLoop的字面意思是运行循环、跑圈,一个App启动后能一直执行,就是因为启动后进入了一个循环,在这个循环中不断监听各种状态、手势动作,并做出相应的响应...

321
来自专栏java达人

Quartz作业调度框架

Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为...

1985
来自专栏進无尽的文章

UI篇-UINavigationController之易忘补充

[UIApplication sharedApplication].statusBarHidden = YES;

862
来自专栏向治洪

仿uc下部弹出菜单

先说说我怎么会无聊到这种地步去弄这个代码呢,在今年2月份的时候公司本来要做个这种弹出的菜单的,有5个按钮每个都有一个菜单,记得网上有仿UC菜单的源码,就下下来看...

1838
来自专栏一“技”之长

Java开发GUI之可编辑区域 原

    Java的awt包中提供了单行的文本编辑组件TextField与多行的文本编辑区TextArea,这两个组件都是继承自TextComponent类。

582

扫码关注云+社区