【问题标题】:Custom collection flow layout for UICollectionView in SwiftSwift 中 UICollectionView 的自定义集合流布局
【发布时间】:2015-08-30 01:45:36
【问题描述】:

我正在使用 Swift 学习 iOS,现在我想创建简单的消息应用程序(非常简单的 WhatsApp 版本)。我浏览了所有集合视图视频教程,但我仍然无法理解如何创建布局,其中单元格将位于屏幕的两侧(两个单元格不能在一行中)。 据我了解,我应该采用流式布局。我像这样覆盖 layoutAttributesForElementsInRect:

override func layoutAttributesForElementsInRect(rect: CGRect) -> [AnyObject]? {
    let attributes = super.layoutAttributesForElementsInRect(rect) as! [UICollectionViewLayoutAttributes]
    for attribute in attributes {
        attribute.frame.origin.x = collectionView!.bounds.width - attribute.frame.width
    }
    return attributes
}

现在我的单元格相互重叠(例如,我有 50 个单元格,但我只能看到 10 个单元格,深度为 5 个单元格)。

编辑:如您所见,每行有 5 个单元格位于彼此下方,所以我总共有 10 行,而不是 50 行。

我想从右侧查看所有 50 个单元格。

所以有人可以给我任何建议我如何实现这个布局。 感谢您的帮助!

【问题讨论】:

  • 从你的描述中很难理解你想看到什么,你看到了什么。您能否用屏幕截图/插图更新您的问题以帮助解释?
  • 我看不到您在哪里更改单元格原点的 y 值。
  • 这是将单元格相互移动的唯一方法吗?集合视图不应该自动将单元格以相等的空格相互放置吗?

标签: ios swift uicollectionview uicollectionviewlayout


【解决方案1】:

可能有点晚了,但希望有用。

1) 如果要显示一列单元格,为什么不使用 UITableView?

2) 制作两个单元格,一个“我”单元格和一个“其他人”单元格。它们看起来不同:可能颜色不同,但一个单元格的标签向左对齐,另一个向右对齐。使用 UICollectionView 时,单元格应比屏幕的一半宽,以便它们自动放置在一列中。无需在自定义 FlowLayout 子类中覆盖 layoutAttributesForElementsInRect。

【讨论】:

    猜你喜欢
    • 2016-06-28
    • 1970-01-01
    • 2015-06-12
    • 2021-01-24
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多