如何以动态宽度水平居中collectionView项目?
Posted
技术标签:
【中文标题】如何以动态宽度水平居中collectionView项目?【英文标题】:How to horizontally center collectionView items with dynamic width? 【发布时间】:2018-10-22 23:33:55 【问题描述】:您好,我环顾四周,还没有找到解决问题的方法。我正在尝试将 collectionView 的项目水平居中,其中项目的宽度和大小都不同。因此,该部分中的某些行可能有 2 个项目,有些可能只有 1 个。我见过的大多数解决方案都设置了 UIEdgeInsets 但由于我不知道该行是否包含多少项目,除了不知道项目大小,我一直很难让它工作。
我附上了一张图片,向您展示我目前拥有的东西。任何建议将不胜感激
【问题讨论】:
仅供参考,我最终使用了KTCenterLayout 重复,从[***.com/a/68734263/10505343]找到答案 【参考方案1】:选择正确的 UI Widget,以最小的努力实现您想要的。根据您的截图,UITableView
应该是实现这一目标的正确选择。
这里有一些提示
使用自定义UITableViewCell
,标签在UITableViewCell
内水平和垂直居中
使用动态大小,这样如果文本变大,单元格也会变大。
去掉单元格的分隔符和背景色,单元格的contentView。
愉快的编码
【讨论】:
A TableView 没有达到我想要的效果,因为它每“行”只显示 1 个标签,我想在标签宽度允许的范围内显示尽可能多的标签。跨度> 【参考方案2】:您可以使用GitHub
中riteshhgupta编写的开源项目TagCellLayout。
初始化布局的示例代码:
import TagCellLayout
let tagCellLayout = TagCellLayout(alignment: .center, delegate: self)
collectionView.collectionViewLayout = tagCellLayout
我知道您可能会为此编写大量代码,但这会很有帮助,甚至您可以自定义不同的布局对齐方式。
【讨论】:
谢谢,我去看看以上是关于如何以动态宽度水平居中collectionView项目?的主要内容,如果未能解决你的问题,请参考以下文章
调整文本大小以适应宽度(1行标签)后,如何在 UILabel 中垂直和水平居中?
宽度大于其包装(设置为溢出:隐藏)的子图像可以动态水平居中吗?