UICollectionView iOS 9在支持RTL语言的项目上发布
在使用UICollectionView
时,似乎苹果在RTL语言中使用自动翻转界面的新function会导致问题。
我在收集视图中使用了Trailing / Leadingtypes的约束条件,并且按照RTL语言切换了它们的值。
问题是实际显示的数据是集合数据源中的最后一个 indexPath
,但是第一个单元格的UIScrollView.contentOffset.x
是0。
一个适当的行为将是以下之一:
- 正确显示第一个
indexPath
并切换滚动的方向(向右) – 最佳select - 不翻转UI /约束,所以
indexPath
-data /indexPath
/scrollView.contentOffset.x
将被同步 – 禁用RTL支持的选项。 - 呈现最后一个indexPath的单元格和数据,但修复
scrollView.contentOffset.x
以表示最后一个单元格的位置。
我猜苹果可能会在将来某个时候修复它,但同时我们将不得不使用倒序数组和/或滚动到最后一个对象的解决方法。
我处于类似的情况,并find了解决办法。 如果您使用的是swift,请将以下代码片段添加到您的项目中,并确保bounds.origin始终遵循集合视图的前端。
extension UICollectionViewFlowLayout { open override var flipsHorizontallyInOppositeLayoutDirection: Bool { return true } }
如果您正在使用Objective-C,只需创buildUICollectionViewLayout类的子类并覆盖flipsHorizontallyInOppositeLayoutDirection,并返回true。 使用这个子类作为你的集合视图的布局对象。