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

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

(第一个条应始终绘制为蓝色,然后尺寸随索引增加。)
ios - UICollectionView项目顺序不以从右到左的语言反转-LMLPHP

这是UICollectionViewFlowLayout的内部错误(在iOS 11上)吗?还是有明显的我想念的东西?

这是我的测试代码(Nothing fancy + XIB with UICollectionView):

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)
}

最佳答案

不支持对动态大小的UICollectionViews进行从右到左的自动支持。为此,您需要显式注册自动布局镜像,如下所示:

  • 创建UICollectionViewFlowLayout的子类
  • 覆盖 flipsHorizontallyInOppositeLayoutDirection ,并在Swift中返回true或在Objective-C中返回YES
  • 将其设置为您的收藏视图的布局

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

    07-27 16:39