有关使用RTL语言支持的项目的UICollectionView iOS 9问题
问题描述:
使用UICollectionView
时,似乎Apple在RTL语言中自动翻转界面的新功能会导致问题。有关使用RTL语言支持的项目的UICollectionView iOS 9问题
我对集合视图使用了Trailing/Leading类型的约束条件,并且他们在RTL语言中切换了它们的值。
的问题是,实际给出的数据是最后indexPath
在收集的数据源,但第一个单元格的UIScrollView.contentOffset.x
的是0
一个正确的行为将一直执行下列操作之一:
- 正确地显示所述第一和
indexPath
切换滚动的方向(向右) - 最佳选项 - 不翻转UI /约束所以所呈现的数据/
indexPath
/scrollView.contentOffset.x
将被同步 - 禁用RTL支持的选项。 - 呈现最后一个indexPath的单元格和数据,但修复了
scrollView.contentOffset.x
以表示最后一个单元格的位置。
我猜苹果可能会在未来的某个时候修复它,但同时我们将不得不使用像倒序数组和/或滚动到最后一个对象的解决方法。
答
我处于类似的情况,并找到了解决方案。如果您使用的是swift,请将以下代码片段添加到您的项目中,并确保bounds.origin始终遵循集合视图的前端。
extension UICollectionViewFlowLayout {
open override var flipsHorizontallyInOppositeLayoutDirection: Bool {
return true
}
}
如果您正在使用的Objective-C,只要继承了UICollectionViewLayout类,并覆盖flipsHorizontallyInOppositeLayoutDirection,并返回true。将此子类用作集合视图的布局对象。
+0
当你对一个答案进行投票表决时,请给出一个答案,然后添加一个评论?这样,每个人都可以知道为什么这是一种糟糕的做法。 – Suran
您能否在[bugreport.apple.com](http://bugreport.apple.com/)上提交错误报告? – wakachamo
@wakachamo会做!感谢您的直接链接... – MatanGold
如果您确实实施了解决方法,请滚动视图而不是颠倒数组 - 错误处于初始位置,而不是布局本身。 – lensovet