アップルは次のように述べています。
「コンテナ ビュー コントローラは、このメソッドを使用して子ビュー コントローラのサイズを返します。UIKit は、ビュー コントローラの viewWillTransition(to:with:) メソッドのデフォルト実装の一部としてメソッドを呼び出します」
そして、私が初めてプログラムを起動したとき:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let child = ViewControllerChild()
self.addChildViewController(child)
self.view.addSubview(child.view)
child.view.translatesAutoresizingMaskIntoConstraints = true
child.view.autoresizingMask = [.flexibleBottomMargin, .flexibleRightMargin]
}
override func size(forChildContentContainer container: UIContentContainer, withParentContainerSize parentSize: CGSize) -> CGSize {
return CGSize(width: 100, height: 100)
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
}
完全な親 vc ビューのサイズの子ビュー コントローラーのビューが (100, 100) ではありません。それで、それをオーバーライドする本当のポイントは何ですか? (viewdidload の最初のロード) で子 vc ビューのフレームを再定義してから、preferredContentSizeDidChange 関数で特性の変更に対応できるのですか?