如何添加自定义子级UICollectionViewController?

时间:2019-07-20 05:28:44

标签: ios swift uicollectionview

我有一个具有容器视图的视图控制器。

我想添加UICollectionViewController作为子视图控制器,即,将UICollectionViewController的视图添加为容器视图的子视图并调用didMove(toParent:)

我希望容器视图的高度是动态的,以便它取决于UICollectionViewController视图的高度。我希望高度UICollectionView等于其内容高度。

谁能指出该怎么做?

这是我到目前为止所做的-

在添加UICollectionViewController的同时,将translatesAutoresizingMaskIntoConstraints设置为false,如https://stackoverflow.com/a/35431534所示。

let viewController = CustomCollectionViewController()
viewController.view.translatesAutoresizingMaskIntoConstraints = false
addChild(viewController)
containerView.addSubview(viewController.view)
viewController.didMove(toParent: self)

viewController.view.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true
viewController.view.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true
viewController.view.leadingAnchor.constraint(equalTo: containerView.leadingAnchor).isActive = true
viewController.view.trailingAnchor.constraint(equalTo: containerView.trailingAnchor).isActive = true

我创建了一个自定义UICollectionView,使其高度取决于https://stackoverflow.com/a/49297382中给出的内容大小。

class CustomCollectionView: UICollectionView {
    override func reloadData() {
        super.reloadData()
        invalidateIntrinsicContentSize()
    }

    override var intrinsicContentSize: CGSize {
        return collectionViewLayout.collectionViewContentSize
    }
}

使用https://stackoverflow.com/a/41404946中给出的答案,将上述自定义UICollectionView设置为CustomCollectionViewController的collectionView

class CustomCollectionViewController: UICollectionViewController {
    override func loadView() {
        collectionView = CustomCollectionView(frame: .zero, collectionViewLayout: collectionViewLayout)
    }
}

我所做的没有用。谁能指出该怎么做?

0 个答案:

没有答案