有关使用RTL语言支持的项目的UICollectionView iOS 9问题

问题描述:

使用UICollectionView时,似乎Apple在RTL语言中自动翻转界面的新功能会导致问题。有关使用RTL语言支持的项目的UICollectionView iOS 9问题

我对集合视图使用了Trailing/Leading类型的约束条件,并且他们在RTL语言中切换了它们的值。

的问题是,实际给出的数据是最后indexPath在收集的数据源,但第一个单元格的UIScrollView.contentOffset.x的是0

一个正确的行为将一直执行下列操作之一:

  1. 正确地显示所述第一和indexPath切换滚动的方向(向右) - 最佳选项
  2. 不翻转UI /约束所以所呈现的数据/ indexPath/scrollView.contentOffset.x将被同步 - 禁用RTL支持的选项。
  3. 呈现最后一个indexPath的单元格和数据,但修复了scrollView.contentOffset.x以表示最后一个单元格的位置。

我猜苹果可能会在未来的某个时候修复它,但同时我们将不得不使用像倒序数组和/或滚动到最后一个对象的解决方法。

+1

您能否在[bugreport.apple.com](http://bugreport.apple.com/)上提交错误报告? – wakachamo

+0

@wakachamo会做!感谢您的直接链接... – MatanGold

+3

如果您确实实施了解决方法,请滚动视图而不是颠倒数组 - 错误处于初始位置,而不是布局本身。 – lensovet

我处于类似的情况,并找到了解决方案。如果您使用的是swift,请将以下代码片段添加到您的项目中,并确保bounds.origin始终遵循集合视图的前端。

extension UICollectionViewFlowLayout { 

    open override var flipsHorizontallyInOppositeLayoutDirection: Bool { 
     return true 
    } 
} 

如果您正在使用的Objective-C,只要继承了UICollectionViewLayout类,并覆盖flipsHorizo​​ntallyInOppositeLayoutDirection,并返回true。将此子类用作集合视图的布局对象。

+0

当你对一个答案进行投票表决时,请给出一个答案,然后添加一个评论?这样,每个人都可以知道为什么这是一种糟糕的做法。 – Suran

没有为为我的作品,请按照以下步骤来解决这一问题是问题的一个通用的解决方案,

  • 给自动布局约束按您的要求,然后从属性检查器中更改语义控制属性从收集视图中强制从故事板的从右到左。

enter image description here

  • 然后打开故事板的源代码,并找到适合您的相关集合视图的“龙头”的属性,并替换成“左”和同为与“后”替换正确的”。现在你差不多完成了。

enter image description here

enter image description here

enter image description here

  • 现在,会给你造成按您的要求。