【问题标题】:UICollectionView items order not reversed in right to left languagesUICollectionView 项目顺序在从右到左的语言中不颠倒
【发布时间】:2018-07-05 10:48:07
【问题描述】:

我注意到一个大问题,在从右到左的语言中,单元格的顺序没有正确颠倒,只有对齐是正确的。但仅适用于水平流布局,并且如果集合视图包含不同的单元格大小!是的,我知道这听起来很疯狂。如果所有单元格大小相同,则排序和对齐良好!

这是我到目前为止使用示例应用程序得到的结果(隔离以确保这是实际问题,而不是其他问题):

(第一个条形图应始终绘制为蓝色,然后随着索引的大小增加。)

这是UICollectionViewFlowLayout(在 iOS 11 上)的内部错误吗?还是有什么明显的我遗漏的东西?

这是我的测试代码(没什么花哨的 + 带有 UICollectionView 的 XIB):

public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return 6
}

public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "test", for: indexPath)
    cell.backgroundColor = (indexPath.item == 0) ? UIColor.blue : UIColor.red
    return cell
}

public func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: (10 * indexPath.item) + 20, height: 170)
}

【问题讨论】:

  • 这看起来确实像一个错误。
  • 我猜你可以找到关于任何奇怪问题的问题/答案。我就是喜欢 Stack Overflow!

标签: ios uicollectionview ios11 right-to-left uicollectionviewflowlayout


【解决方案1】:

动态大小的 UICollectionViews 的自动从右到左支持不是受支持的配置。为此,您需要明确注册自动布局镜像,如下所示:

此属性是在 UICollectionViewLayout(Flow 的父级)上定义的,因此从技术上讲,您可以在您已有的任何自定义布局上使用此属性。

【讨论】:

  • 谢谢!这是一个很奇怪的行为,你有指定文档的链接吗?
  • 谢谢,你救了我!
  • 这在 ios 11 中完美运行,但对于 ios 10,行为仍然不理想 基本上,我有一个页脚单元格、一些内容单元格和一个占位符单元格,我在 ios 中没有结果时显示从 11 开始,占位符和页脚单元格默认正确地从 r 到 l 放置,但内容单元格显示不正确。覆盖流布局在 ios 10 中修复了这个问题,占位符和页脚单元格放置不正确即使覆盖,从左到右,添加覆盖只是确保内容单元格不重叠页脚单元格之前有其他人经历过吗?
【解决方案2】:

我相信为此您必须实现自己的custom collectionViewLayout - 尽管我知道人们会期望它会像其他组件的从右到左一样自动工作。

【讨论】:

    猜你喜欢
    • 2011-04-19
    • 2011-06-09
    • 2021-06-10
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多