私のビューコントローラには、コンテナビューとして使用しているNSViewがあります。 ライブラリから「コンテナビュー」をドラッグし、セグおよび埋め込みビューコントローラを削除し、スーパービュー(ビューコントローラのメインビュー)に制約を追加し、ビューコントローラのコードでコンテナビューのコンセントを設定しました。コンテナビューでのCocoa、実行時の内容のスワップとサイズの保持
これまでのところとても良いです。
コンテナビューの内容を、実行時に決定された複数の異なるView Controllerのメインビューに入れ替えたいとします。私はこのようなコードで、それを行うことに成功しました:
func swapContainerViewContents(with viewController: NSViewController) {
self.containerView.subviews.foreach({ subview in
subview.removeFromSuperview()
})
containerView.addSubview(viewController.view)
}
これは動作しますが、私は、ウィンドウのサイズを変更するとすぐに、子ビューは明らかに元のサイズのままで(私は任意の制約を設定していません) 。
代わりに、私は必要な制約を追加した場合:
let newView = viewController.view
containerView.addSubview(newView)
newView.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true
newView.rightAnchor.constraint(equalTo: containerView.rightAnchor).isActive = true
newView.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true
newView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true
を...今、ウィンドウのサイズを変更することはできません! (サブビューの初期サイズでスタックされています)。
どうすればいいですか?