Swift 2 集合视图扩展,用于水平滚动到垂直
Posted
技术标签:
【中文标题】Swift 2 集合视图扩展,用于水平滚动到垂直【英文标题】:Swift 2 collection view extension for horizontal scroll to vertical 【发布时间】:2016-08-11 08:22:01 【问题描述】:我的收藏视图有这个扩展,它可以进行水平滚动,但我想在垂直滚动时更改它??
extension viewRe : UIScrollViewDelegate
func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>)
let layout = self.recipesCollView?.collectionViewLayout as! UICollectionViewFlowLayout
let cellWidthIncludingSpacing = layout.itemSize.width + layout.minimumLineSpacing
var offset = targetContentOffset.memory
let index = (offset.x + scrollView.contentInset.left) / cellWidthIncludingSpacing
let roundedIndex = round(index)
offset = CGPoint(x: roundedIndex * cellWidthIncludingSpacing - scrollView.contentInset.left, y: -scrollView.contentInset.top)
targetContentOffset.memory = offset
有了这个扩展,我试图让单元格保持在视图的顶部,即使他滚动,因为启用了分页。因此,每当用户滚动时,我希望单元格在用户滚动时粘在顶部等等。
【问题讨论】:
你试过设置集合视图的滚动方向吗?不知道你为什么要实际实施扩展。 @donnywals 是的,启用了滚动和分页 但是你设置滚动方向了吗?由于您尝试从水平滚动转换为垂直滚动,您可能希望将scrollDirection
设置为 .Vertical
您更新了问题,但我不确定您现在在问什么。您希望将集合视图的滚动方向从水平转换为垂直,并且您的扩展应该使单元格粘住到顶部?你试过什么了?如果你让它水平工作不会垂直意味着你应该将 x 和 left 部分更改为 y 和 top?
@donnywals 是的,我已经尝试过了,但还是不行
【参考方案1】:
@donnyWals 是对的。如果您使用的是UICollectionView
,只需更改其UICollectionViewFlowLayout
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = . Horizontal
let collectionView = UICollectionView(frame: frame, collectionViewLayout: layout)
或者如果你有一个现有的UICollectionView
if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout
layout.scrollDirection = .Horizontal
遵循官方 API:
UICollectionView
UICollectionViewFlowLayout
【讨论】:
我更新了我的问题,因为我第一次不清楚。对不起。以上是关于Swift 2 集合视图扩展,用于水平滚动到垂直的主要内容,如果未能解决你的问题,请参考以下文章