应用启动时,我使用此方法设置根视图控制器。

func showRootViewController() {
    let sb = UIStoryboard.init(name: "Main", bundle: nil)
    let mainViewController = sb.instantiateInitialViewController()!
    self.window?.rootViewController = mainViewController
    self.window?.makeKeyAndVisible()
}

在主视图控制器中,我编写了将视图设置为容器视图的代码
class MainViewController: UIViewController {

    @IBOutlet weak var headerView: UIView!
    @IBOutlet weak var containerView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

            }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        if(userManager.hasRegistered()) {
            let sb = UIStoryboard.init(name: "Login", bundle: nil)
            self.setContentViewController(sb.instantiateInitialViewController()!)
        } else {
            let sb = UIStoryboard.init(name: "Registration", bundle: nil)
            self.setContentViewController(sb.instantiateInitialViewController()!)
        }

    }

    func setContentViewController(_ contentViewController: UIViewController) {
        print(self.containerView.frame)
        let contentView = contentViewController.view!
        contentView.frame = self.containerView.bounds
        self.containerView.addSubview(contentView)
    }
}

让我们看一下视图,我有用于添加子视图的容器视图。我设置背景来帮助每个人解决容器视图的框架

子视图的设计如下:

结果不符合我的预期。 ContainerView走到了某个地方(我真的不知道),子视图位于顶部。

请帮我。

最佳答案

contentView框架设置在错误的位置。
您应该移动以下代码行:

contentView.frame = self.containerView.bounds


override func func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    contentView.frame = self.containerView.bounds
}

关于ios - swift subview 无法完全填充父 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43067005/

10-12 16:11