UICollectionView项目顺序未从右到左语言中颠倒

时间:2018-01-26 03:50:33

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

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

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

(第一个条应始终绘制为蓝色,然后使用索引增加大小。) enter image description here

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

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:0)

我相信为此,你必须实现自己的custom collectionViewLayout - 虽然我知道人们会希望它会自动地在其他组件上从右向左工作。