Swift 子视图定位到故事板项目

Swift SubView Positioning to StoryBoard Item

我有一个带有通过故事板界面添加的 NavBar 项的视图控制器。但是,我以编程方式制作了一个 Collection View,并希望它位于 y 轴上,因此对于任何屏幕尺寸,它始终位于 NavBar 下方。我不知道该怎么做,但下面的代码是它现在如何放置在视图控制器中。

override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        collectionView?.frame = CGRect(x: 0, y: 64, width: view.frame.size.width, height: 65).integral
    }
collectionView?.frame = CGRect(x: 0, y: NavBar.frame.maxY , width: view.frame.size.width, height: 65).integral

如果您将视图控制器嵌入到 NavigationController 中,然后在代码中添加 UICollectionView,将其锚点设置到安全区域(或至少顶部)将实现您的目标询问,如果您在其中放置任何大标题,它甚至会同步 collection 视图的滚动和导航栏上的拉动。

此外,我不会在 viewDidLayoutSubviews() 中设置 collection 视图的框架,只是在将其添加到 parent 视图后设置其锚点。

可能是这样的:

view.addSubview(collectionView)
collectionView.translatesAutoresizingMaskIntoConstraints = false
let safeArea = view.safeAreaLayoutGuide
[ 
    collectionView.bottomAnchor.constraint(equalTo: safeArea.bottomAnchor, constant: 0),
    collectionView.topAnchor.constraint(equalTo: safeArea.topAnchor, constant: 0),
    collectionView.leadingAnchor.constraint(equalTo: safeArea.leadingAnchor, constant: 0),
    collectionView.trailingAnchor.constraint(equalTo: safeArea.trailingAnchor, constant: 0)
].forEach { [=10=].isActive = true }
view.layoutIfNeeded()