【问题标题】:Collectionview No padding on cell labelCollectionview 单元格标签上没有填充
【发布时间】:2017-09-05 15:28:19
【问题描述】:

我正在尝试在具有 2 个部分的页面上构建一个集合视图。我希望第 1 节单元格为黄色,第 2 节单元格为蓝色。

我已经设法让collectionview 单元格显示出来——但是这些单元格之间似乎没有任何填充——以及背景颜色的结束位置。如何在单元格周围添加更多彩色填充以使它们看起来更整洁? (理想情况下使用界面生成器) 截屏:

编辑:将边缘插入添加到我的自定义单元格后 - 它让我更接近我所追求的,但似乎截断了文本 - 并删除了我的圆角:

代码:

override func drawText(in rect: CGRect) {
    let insets = UIEdgeInsets.init(top: 5, left: 5, bottom: 5, right: 5)
        super.drawText(in: UIEdgeInsetsInsetRect(rect, insets))
    }

有没有办法让 UICollectionViewFlowLayoutAutomaticSize 考虑额外的 10 宽度并保持圆角(使用插图时)?

【问题讨论】:

    标签: ios swift uicollectionview


    【解决方案1】:

    您可以先在单元格上使用UIView,方法是设置其约束,然后在该视图中添加标签。

    最后根据您的选择为单元格、UIView、标签赋予适当的颜色。

    【讨论】:

    • 谢谢 - 但是在单元格周围添加一个视图 - 不允许我在单元格本身内添加更多填充。 (见上面的截图)
    • 您可以将 UIView 约束设置为具有期望约束常量的单元格(例如,前导、尾随、顶部和底部为 5)
    • 这会导致更多的颜色填充,但现在我知道你想要简单的单元格间距
    【解决方案2】:

    如果您使用UICollectionViewFlowLayout,您可以在Interface Builder 中通过设置布局实例的属性来调整行间距和项目间距。

    您可以在 Interface Builder 左侧窗格中的 UICollectionView 实例的正下方/内找到布局实例。

    1. 打开界面生成器
    2. 在UICollectionView 中查找UICollectionViewFlowLayout 对象
    3. 在右侧窗格中选择Size Inspector 选项卡
    4. 更改Min Spacing

    注意:这会在单元格之间留出一些空间。如果您想更改单元格或标签的内容插图,您应该使用自定义单元格。 要将内容插入添加到您的 UILabels,您可以查看 this question 和/或 that question

    【讨论】:

    • 非常感谢@Mert-实际上最后一点是我所追求的-如果我已经有一个自定义单元格(我有),我该如何更改内容插图
    • 那么您的问题就变成了“如何将 contentInsets 添加到 UILabel?”。 SO中已经有很多关于此的问题,我在答案中添加了其中两个。希望有帮助
    • 谢谢 Mert - 我尝试了第一个解决方案 - 它似乎截断了所有内容)(已将此添加到上面的问题中)所以你可以看到输出 - 我想我需要做更多的工作覆盖内在内容大小。对于一个简单、常见的用例来说,这似乎需要做很多工作。希望我只是错过了一些东西。
    • 完全正确。您的标签绘制文本,但是当自动布局引擎要求其内容大小时,它会返回较小的大小,因此最终会被截断。很抱歉,我无法在这里详细解释,但我建议使用谷歌搜索自动布局以了解大致情况
    • 感谢这张 SO 票最终帮助解决了问题stackoverflow.com/questions/21167226/…。感谢 Mert 的帮助-您想更新您的答案,我会将其标记为答案吗?
    猜你喜欢
    • 1970-01-01
    • 2018-07-08
    • 2015-01-26
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多