如何更改UICollectionView的滚动方向?

47

我已经成功地实现了一个UICollectionView。是否有可能改变scrollDirection

请问能否展示如何以编程方式实现它?


3个回答

158

使用UICollectionViewFlowLayout来在代码中创建它的方法如下:

let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .vertical
let collectionView = UICollectionView(frame: frame, collectionViewLayout: layout)

或者如果您正在使用现有的集合视图

if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
    layout.scrollDirection = .vertical
}

1
当我尝试在“viewWillTransition”方法中处理它时,它会崩溃:“致命错误:在隐式解包可选值时意外发现nil”。可能的原因是什么? - Satyam

1
如果您正在使用UICollectionViewCompositionalLayout

UICollectionViewCompositionalLayoutConfiguration具有scrollDirection属性。更改它将影响整个集合视图。如果需要,您还可以为每个部分设置单独的滚动方向。

let configuration = UICollectionViewCompositionalLayoutConfiguration()
configuration.scrollDirection = .vertical

collectionView.collectionViewLayout = UICollectionViewCompositionalLayout(
    sectionProvider: { section, environment in
        // Return section
    },
    configuration: configuration
)

0

如果您没有使用故事板(Storyboard)并且所有内容都是通过编程完成的。 那么当我们像这样做时:

  lazy var snapCollectionView: UICollectionView = {
        let layout = UICollectionViewFlowLayout()
        let collectionView = UICollectionView(frame: CGRect.zero, 
        collectionViewLayout: layout)
        layout.scrollDirection = .horizontal
        collectionView.delegate = self
        collectionView.dataSource = self
        collectionView.backgroundColor = UIColor(named: "background")
        return collectionView
    }()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接