子视图控制器大小问题

Child View Controller Size Issue

我有一个视图控制器,导航栏中有一个分段控件,用于切换子视图控制器与父控制器的连接。它工作正常,但我小时候的 table 视图 vc 大小不正确。它在底部被切断。

父级 VC:

import UIKit

class ShareTabViewController: UIViewController {

    let segementedControl = UISegmentedControl(items: ["Share", "Blog", "Progress"])

    override func viewDidLoad() {
        super.viewDidLoad()

        self.segementedControl.sizeToFit()
        self.segementedControl.tintColor = Constants.Colors.raPurple
        self.segementedControl.selectedSegmentIndex = 0
        self.segementedControl.addTarget(self, action: #selector(selectionChanged(_:)), for: .valueChanged)
        self.navigationItem.titleView = self.segementedControl

        let shareVC = ShareTableViewController()
        self.view.addSubview(shareVC.view)
        self.addChild(shareVC)
        shareVC.didMove(toParent: self)
    }

    @objc func selectionChanged(_ sender: UISegmentedControl) {
        for subview in self.view.subviews {
            subview.removeFromSuperview()
        }

        for childVC in self.children {
            childVC.removeFromParent()
        }

        switch sender.selectedSegmentIndex {
        case 0:
            let shareVC = ShareTableViewController()
            self.view.addSubview(shareVC.view)
            self.addChild(shareVC)
        case 1:
            let blogVC = BlogViewController()
            self.view.addSubview(blogVC.view)
            self.addChild(blogVC)
        case 2:
            let progressVC = ProgressViewController()
             self.view.addSubview(progressVC.view)
            self.addChild(progressVC)
        default:
            print("default")
        }
    }
}

您需要为 selectionChanged 中的插件设置框架,为 viewDidLoad 中的插件设置框架 viewDidLayoutSubviews,因为它有错误的框架,或者一般使用

NSLayoutConstraint.activate([ 
   shareVC.view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor), 
   shareVC.view.trailingAnchor.constraint(equalTo: self.view.trailingAnchor), 
   shareVC.view.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor), 
   shareVC.view.bottomAnchor.constraint(equalTo:self.view.safeAreaLayoutGuide.bottomAnchor) 
])