我有一个具有容器视图的视图控制器。
我想添加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)
}
}
我所做的没有用。谁能指出该怎么做?