😽
Use SwiftUI with UIKit #WWDC22
WWDC22のセッション Use SwiftUI with UIKit から個人的に気になったものだけをピックアップ。
UIHostingController
とNSHostingController
/NSHostingView
にsizingOptions
プロパティーが追加
- UIとNSでそれぞれ
UIHostingControllerSizingOptions
とNSHostingSizingOptions
を設定する。 - 定義されている値は、前者で
intrinsicContentSize
とpreferredContentSize
の2つ、 - 後者は、それに加えて
minSize
,maxSize
とstandardBound
の5つ存在する
UIHostingConfiguration
でcellのコンテンツにSwiftUI Viewを表示可能に
cell.configurationUpdateHandler { cell, state in
cell.contentConfiguration = UIHostingConfiguration {
HStack {
HealthCategoryView()
Spacer()
if state.isSelected {
Image(systemName: "checkmark")
}
}
}
}
- これまでも
UIHostingController.view
をcell.contentView
に追加する方法があったものの、UIHostingController
をVCの階層に追加するか否かなどの扱いの解が不明瞭であった -
UIHostingConfiguration
を利用した場合は、UIHostingController
がVC階層に追加されないことがView Debuggerで確認できた (iOS 16.0 beta 1時点)- これは、セッション中でも言及されている
- また、
cell.contentView
は、UIHostingContentView
のインスタンスになる模様
-
iOS 15以下をサポートし
UIHostingConfiguration
の代わりにUIHostingController
を利用する場合は、VC階層への追加をしなくてもいいか、と言われればUIHostingConfiguration
で頑張ってる感があるので微妙かもしれないUIHostingConfiguration supports the vast majority of SwiftUI features.
-
UIViewControllerRepresentable
に準拠したViewやそれをbody
で利用するViewは、利用不可
Discussion