【Swift】StackViewの乗ったXib(UIView)でSelf-Sizingしたい
結論
そのまま、取得したView
のsystemLayoutSizeFitting
で、StackView
のAutoLayoutが反映されると思ったら、そんなことはなかった。
let v = CustomeView.instantiate() v.frame = .init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: v.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height)
subviewしたStackView
から、取得するようにしたらうまくいきました🎉
let v = CustomeView.instantiate() v.frame = .init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: v.stackView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height)
ちなみに、CustomeViewをXib経由で、動的な高さにしたい時は、Custom class
ではなく、File's Owner
を設定するようにすると、XibのAutoLayoutが決定した段階で初期化されます。
てな感じで本日は以上となります🍺