【问题标题】:Swift 2 collection view extension for horizontal scroll to verticalSwift 2 集合视图扩展,用于水平滚动到垂直
【发布时间】: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 是的,我已经尝试过了,但还是不行

标签: swift2 uicollectionview uicollectionviewlayout uiscrollviewdelegate


【解决方案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

【讨论】:

  • 我更新了我的问题,因为我第一次不清楚。对不起。
猜你喜欢
  • 1970-01-01
  • 2015-08-04
  • 2015-12-21
  • 1970-01-01
  • 2017-02-03
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
相关资源
最近更新 更多