首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >UICollectionView自定义水平分页布局

UICollectionView自定义水平分页布局
EN

Stack Overflow用户
提问于 2016-06-04 17:42:01
回答 2查看 3.5K关注 0票数 1

我正在尝试使用集合视图来模拟这种行为。我从使用这个方法开始,它让我更接近了。尽管我在水平分页CollectionView上越往右滑动,内容越移越远。此外,单元格之间的间隔也是关闭的。我相信它需要一个定制的布局,但我不确定。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

    return CGSize(width: collectionView.frame.width - 20, height: collectionView.frame.height - 20)

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-04 22:04:26

这取决于三个因素:( 1)分段插入;( 2)单元间距;( 3)单元大小

任何变化,你都必须为你的情况改变其他人。

( 1)左、右加20

2)将单元格间距设置为10

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func collectionView(collectionView: UICollectionView,
    layout collectionViewLayout: UICollectionViewLayout,
    minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
        return 10
}
func collectionView(collectionView: UICollectionView, layout
    collectionViewLayout: UICollectionViewLayout,
    minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
        return 10
}

3)设置单元格大小

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func collectionView(collectionView: UICollectionView,
    layout collectionViewLayout: UICollectionViewLayout,
    sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
        return CGSize(width: collectionView.frame.width / 1.15 ,height: collectionView.frame.height)
}

4)这将使屏幕中的单元格居中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

    let pageWidth:CGFloat = scrollView.frame.width / 1.15 + cellSpacing ;

    let currentOffset:CGFloat = scrollView.contentOffset.x;
    let targetOffset:CGFloat = targetContentOffset.memory.x
    var newTargetOffset:CGFloat = 0;

    if targetOffset > currentOffset
    {
        newTargetOffset = ceil(currentOffset / pageWidth) * pageWidth;
    }
    else
    {
        newTargetOffset = floor(currentOffset / pageWidth) * pageWidth;
    }

    if newTargetOffset < 0
    {
        newTargetOffset = 0
    }
    else if newTargetOffset > scrollView.contentSize.width
    {
    newTargetOffset = scrollView.contentSize.width;
    }

    targetContentOffset.memory.x = currentOffset

    scrollView.setContentOffset(CGPointMake(newTargetOffset, 0), animated: true)

}
票数 8
EN

Stack Overflow用户

发布于 2019-05-07 17:13:56

我改变了一点@Mohamed的解决方案,它对我来说非常有效:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

    let cellSpacing: CGFloat = self.collectionView(self.collectionView, layout: self.collectionView.collectionViewLayout, minimumInteritemSpacingForSectionAt: 0)
    let pageWidth: CGFloat = self.pageWidth + cellSpacing

    let currentOffset = scrollView.contentOffset.x
    let targetOffset = targetContentOffset.pointee.x
    targetContentOffset.pointee.x = currentOffset

    var pageNumber = 0
    if targetOffset > currentOffset {
        pageNumber = Int(ceil(currentOffset / pageWidth))
    }
    else {
        pageNumber = Int(floor(currentOffset / pageWidth))
    }

    let indexPath = IndexPath(row: pageNumber, section: 0)
    self.collectionView.scrollToItem(at: indexPath, at: UICollectionView.ScrollPosition.centeredHorizontally, animated: true)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37636652

复制
相关文章
iOS - Swift UICollectionView横向分页的问题UICollectionView横向分页的问题
UICollectionView横向分页的问题 情况 直接看图 滚前 滚后 已经设置collectionView的isPagingEnabled为true了,可是出现了这种情况,原因就是collect
LinXunFeng
2018/06/29
1.3K0
使用 UICollectionView 实现分页滑动效果
在上篇博客中,给大家演示了如何利用 UICollectionView 这个强大的控件去实现一个卡片轮播的效果,后来有网友联系我说:"他遇到一个问题,当他滚动的 item 宽度与屏幕宽度一致时,滚动效果是正常的,但当把 item 宽度的值设置成小于屏幕宽度的时候,滚动就会出现遮挡的 bug, 这该如何解决呢!"
HelloWorld杰少
2022/08/04
3.1K0
使用 UICollectionView 实现分页滑动效果
iOS流布局UICollectionView系列四——自定义FlowLayout进行瀑布流布局
        前几篇博客从UICollectionView的基础应用到设置UICollectionViewFlowLayout更加灵活的进行布局,但都限制在系统为我们准备好的布局框架中,还是有一些局限性,例如,如果我要进行瀑布流似的不定高布局,前面的方法就很难满足我们的需求了,如下:
珲少
2018/08/15
3.1K0
iOS流布局UICollectionView系列四——自定义FlowLayout进行瀑布流布局
iOS流布局UICollectionView系列二——UICollectionView的代理方法
        在上一篇博客中,介绍了最基本的UICollectionView的使用和其中我们常用的属性和方法,也介绍了瀑布流布局的过程与思路,这篇博客是上一篇的补充,来讨论关于UICollectionView的代理方法的使用。博客地址:
珲少
2018/08/16
2.1K0
iOS流布局UICollectionView系列二——UICollectionView的代理方法
iOS---UICollectionView自定义流布局实现瀑布流效果
自定义布局,实现瀑布流效果 自定义流水布局,继承UICollectionViewLayout 实现一下方法 // 每次布局之前的准备 - (void)prepareLayout; // 返回所有的尺寸 - (CGSize)collectionViewContentSize; // 返回indexPath这个位置Item的布局属性 - (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)
用户1941540
2018/05/11
2.1K0
iOS流布局UICollectionView系列一——初识与简单使用UICollectionView
        UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十分类似。简单来说,UICollectionView是比UITbleView更加强大的一个UI控件,有如下几个方面:
珲少
2018/08/16
3.1K0
iOS流布局UICollectionView系列一——初识与简单使用UICollectionView
iOS流布局UICollectionView系列五——圆环布局的实现
        前边的几篇博客,我们了解了UICollectionView的基本用法以及一些扩展,在不定高的瀑布流布局中,我们发现,可以通过设置具体的布局属性类UICollectionViewLayoutAttributes来设置设置每个item的具体位置,我们可以再扩展一下,如果位置我们可以自由控制,那个布局我们也可以更加灵活,就比如创建一个如下的circleLayout:
珲少
2018/08/16
1.5K0
iOS流布局UICollectionView系列五——圆环布局的实现
使用 UICollectionView 实现首页卡片轮播效果
今天跟大家来聊聊一个强大的 UI 控件:UICollectionView。UICollectionView 是 iOS6 之后引入的一个新的 UI 控件,与 UITableView 有着很多相似的地方,在开发过程中我们都会选择使用它们俩来为 App 的整个页面进行布局,比如说淘宝的首页;相比 UITbleView,UICollectionView 的功能比它要强大的多,它支持水平与垂直俩种方向的布局,开发者可以完全自定义一套 layout 布局方案,实现出意想不到的效果。
HelloWorld杰少
2022/08/04
2.1K0
使用 UICollectionView 实现首页卡片轮播效果
Swift 自定义布局实现 Cover Flow 效果
大家早上好,今天我又给大家带来了一篇关于 UICollectionView 系列的文章,在上一篇文章中,我们实现了一个酷炫的瀑布流布局,带大家初步的了解了在 UICollectionView 中该如何创建自定义布局。但是上一篇中实现的自定义布局稍显简单,只能说是比较粗略的计算了下布局各个 item 的位置,搞明白了继承自 UICollectionFlowLayout 子类它需要重载的方法的意义,那么今天这篇文章我们就来实现一个更加复杂的自定义布局: Cover Flow 效果吧!
HelloWorld杰少
2022/08/04
1.8K0
Swift 自定义布局实现 Cover Flow 效果
分页效果布局
1 <p class="jcFY"> 2 显示 3 <select name="" id=""> 4 <option value="10">10</option> 5 <option value="20">20</option> 6
xing.org1^
2018/05/17
1K0
iOS - Swift UICollectionView横向分页滚动,cell左右排版
情况 最近在做表情键盘时遇到一个问题,我用UICollectionView来布局表情,使用横向分页滚动,但在最后一页出现了如图所示的情况 只显示一半 情况分析图 是的,现在的item分布就是这个鬼样子
LinXunFeng
2018/06/29
4.3K0
iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局
        前面的博客介绍了UICollectionView的相关方法和其协议中的方法,但对布局的管理类UICollectionViewFlowLayout没有着重探讨,这篇博客介绍关于布局的相关设置和属性方法。
珲少
2018/08/16
2K0
iOS流布局UICollectionView系列三——使用FlowLayout进行更灵活布局
CSS布局:水平居中
前言                                 一直对CSS布局一知半解,这段时间打算定下心来好好学习一下,于是先从最简单的水平居中布局开始入手。下面以分页组件为实例来记录各种实
^_^肥仔John
2018/01/18
7.2K0
CSS布局:水平居中
iOS 封装跑马灯和轮播效果
iOS UICollectionView实现跑马灯和轮播效果.gif 功能描述:WSL_RollView 是基于UICollectionView实现的支持水平和垂直两个方向上的的分页和渐进循环轮播效果,可以设置时间间隔、渐进速率、是否循环、分页宽度和间隔,还支持高度自定义分页视图的控件。 一、实现方法 ①、 首先用UICollectionView和计时器实现一个基本的水平滚动效果,如下图,这个太简单就不在此详述。 iOS UICollectionView ②、对比上面的效果图,我们还需要解决分页的宽度
且行且珍惜_iOS
2018/10/10
4.2K0
iOS 封装跑马灯和轮播效果
iOS自定义的emoji表情键盘 原
        随着iOS系统版本的升级,对原生emoji表情的支持也越来越丰富。emoji表情是unicode码中为表情符号设计的一组编码,当然,还有独立于unicode的另一套编码SBUnicode,在OS系统中,这两种编码都有很好的支持。UI系统会自动帮我们将编码转义成表情符号,例如用SBUnicode如下代码:
珲少
2018/08/15
3K0
iOS自定义的emoji表情键盘
                                                                            原
Flutter布局基础——Row水平布局
Flutter中水平布局使用Row,可设置元素水平方向排列,如果想要子元素充满,可把子元素使用Expanded包括起来。
莫空9081
2021/07/23
3.6K0
Qt 水平布局 QHBoxLayout
Qt 像其他编辑器一样,在添加控件时,也可以自定义控件的坐标,让每个控件处于你希望的位置,但是这样相对麻烦,而 Qt 提供了一系列布局功能,本文介绍的就是水平布局 QHBoxLayout,他可以将一系列控件加入其布局中,然后将整个布局应用到窗口中。详见代码:
我与梦想有个约会
2023/10/20
5510
Qt 水平布局 QHBoxLayout
Ios常用第三方框架(二)
图表 PNChart - 国内开源作者,动态的图表。 swift-linechart - 功能完整、实用的折线图组件。使用方便,参数配置简单。是不可多得的优质组件--swift。 ios-charts - 一款优秀 Android 图表开源库 MPAndroidChart 的 Swift 语言实现版(支持 Objective-C 和 Swift 调用)。缺省提供的示例代码为 Objective-C。 TEAChart - xhacker/TEAChart 一个简洁的 iOS 图表库,支持柱状图、饼图
honey缘木鱼
2018/09/26
7.7K0
iOS流水布局UICollectionView简单使用引实现结
开发中我们最常看到的可能是表视图UITableView了,但其实还有一个视图也很常见,特别是一些图片、商品、视频的展示界面,用UICollectionView来展现往往会更加方便。
Cloudox
2021/11/23
1.1K0
iOS流水布局UICollectionView简单使用引实现结
iOS流布局UICollectionView系列七——三维中的球型布局
        通过6篇的博客,从平面上最简单的规则摆放的布局,到不规则的瀑布流布局,再到平面中的圆环布局,我们突破了线性布局的局限,在后面,我们将布局扩展到了空间,在Z轴上进行了平移,我们实现了一个类似UIPickerView的布局模型,其实我们还可以再进一步,类比于平面布局,picKerView只是线性排列布局在空间上的旋转与平移,这次,我们更加充分了利用一下空间的尺寸,来设计一个圆球的布局模型。以下是前几篇博客地址:
珲少
2018/08/16
1.5K0
iOS流布局UICollectionView系列七——三维中的球型布局

相似问题

UICollectionView水平分页布局

120

UICollectionView -垂直滚动,具有自定义布局的水平分页

11

水平UICollectionView单行布局

22

UICollectionView -水平卷轴,水平布局?

1416

创建uicollectionview布局3x3和水平分页

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文