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 条评论
登录 后参与评论

相关文章

来自专栏移动端周边技术扩展

WebView中JS调用Native交互

通过vueProject(名称随意,需要和原生界面定义一致)对象直接调用Native的方法

682
来自专栏xingoo, 一个梦想做发明家的程序员

CIOCPServer的数据结构定义及内存池方案

为了避免频繁的申请释放内存,使用内存池来管理缓冲区对象和客户上下文对象使用的内存。 使用指针保存所有空闲的内存块,形成空闲列表。 申请内存时,这个指针不为NUL...

1949
来自专栏落影的专栏

iOS面试题----实践向

前言 很多人都说熟悉UIKit,那对于常见的API是否熟悉? 多线程是前端经久不衰的考点。 大家对于Block的weak-strong dance都耳熟能详...

4307
来自专栏清晨我上码

spring websocket推送

2524
来自专栏流柯技术学院

python批量下载图片的三种方法

win32com可以获得类似js里面的document对象,但貌似是只读的(文档都没找到)。

1502
来自专栏君赏技术博客

HQ移动20170317期周报

删除缓存:rm ~/Library/Caches/CocoaPods/search_index.json

1053
来自专栏老司机的简书

TableView优化之高度缓存

不管你信与不信,这都不是真的。 因为最近公司的项目要上二版,然而我还没有提前完成他的决心,所以,你懂得。

1983
来自专栏偏前端工程师的驿站

JS魔法堂:深究JS异步编程模型

前言  上周5在公司作了关于JS异步编程模型的技术分享,可能是内容太干的缘故吧,最后从大家的表情看出“这条粉肠到底在说啥?”的结果:(下面是PPT的讲义,具体的...

2516
来自专栏恰同学骚年

ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程

开篇:上一篇我们了解了在WebForm模式下一个Page页面的生命周期,它经历了初始化Init、加载Load以及呈现Render三个重要阶段,其中构造了页面控件...

1223
来自专栏琯琯博客

Yii2 学习笔记之助手类

2797

扫码关注云+社区