在普通 UIView 下约束集合视图

Constraining a collection view under a normal UIView

提问人:Peter 提问时间:3/14/2020 最后编辑:Kate OrlovaPeter 更新时间:3/15/2020 访问量:49

问:

我有一个显示良好的 UIView。我正在尝试让一个collectionView显示在它下面。这两个元素在单独调用时都显示良好,但是当我调用这两个元素时,我会得到约束错误。

在我看来,我确实加载了:

    configureStatsView()
    configureCollectionView()

ConfigureStatsView:

    private func configureStatsView() {

    view.addSubview(statsView)
    statsView.translatesAutoresizingMaskIntoConstraints = false
    statsView.backgroundColor = .systemRed

    let padding: CGFloat    = 20

    NSLayoutConstraint.activate([

        statsView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
        statsView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: padding),
        statsView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -padding),
        statsView.heightAnchor.constraint(equalToConstant: 180),

    ])
}

配置CollectionView:

    private func configureCollectionView() {

    collectionView = UICollectionView(frame: view.bounds, collectionViewLayout: UIHelper.createThreeColumnFlowLayout(in: view))
    view.addSubview(collectionView)
    collectionView.delegate = self
    collectionView.backgroundColor = .systemBackground
    collectionView.register(CustomCell.self, forCellWithReuseIdentifier: CustomCell.resuseID)

    let padding: CGFloat    = 20

    NSLayoutConstraint.activate([

        collectionView.topAnchor.constraint(equalTo: statsView.bottomAnchor, constant: padding),
        collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: padding),
        collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -padding),
        collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor),

    ])
}
斯威夫特 swift3 swift2

评论


答:

0赞 Shehata Gamal 3/14/2020 #1

你错过了

collectionView.translatesAutoresizingMaskIntoConstraints = false