水平设置时UICollectionView滚动的自然方向是从左到右。有没有办法扭转这种局面?越简越好。
答案 0 :(得分:10)
我不确定你的意思 - 如果你将滚动设置为水平,它会向右和向右滚动。如果您希望它从右侧启动,您可以使用此方法:
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:self.theData.count - 1 inSection:0] atScrollPosition:UICollectionViewScrollPositionRight animated:NO];
这假设您有1个部分,填充集合视图的数组称为theData。
答案 1 :(得分:2)
swift也是如此:
collectionView?.scrollToItemAtIndexPath(NSIndexPath(forItem: theData.count - 1, inSection: 0), atScrollPosition: .Right, animated: false)
答案 2 :(得分:0)
Swift4解决方案 在cellForItemAt collectionView函数中
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = categoryBook.dequeueReusableCell(withReuseIdentifier: "HomeCategoryCell", for: indexPath) as! HomeCategoryCell
collectionView.transform = CGAffineTransform(scaleX:-1,y: 1);
cell.transform = CGAffineTransform(scaleX:-1,y: 1);
}
但是这种解决方案在某些情况下t work properly if it dosen
不能使用colletcion视图scrollToItem方法,并且可以在重新加载数据后实现它。
self.YourCollectionView.reloadData()
self.YourCollectionView.scrollToItem(at: NSIndexPath(item: self.YourObjectListData.count - 1, section: 0) as IndexPath, at: .right, animated: false)
答案 3 :(得分:0)
我发现将 xCode 12.4 与面向 iOS 12 的应用程序一起使用,似乎不需要以不同的顺序加载项目或进行任何转换。唯一的问题与初始滚动位置有关。所以我需要做的就是让事情在 RTL 和 LTR 中工作如下:
collectionView.reloadData {
if self.collectionView.effectiveUserInterfaceLayoutDirection == .rightToLeft {
self.collectionView?.scrollToItem(at: IndexPath(row:0, section:0), at: .right, animated: false)
}
}