2

我想在我的基于 UIKit 的 UI 中嵌入一些 SwiftUI,不幸的是 Apple 不提供UIHostingView, 只有UIHostingController. 我可以或多或少地忽略该控制器并只使用它的视图,还是我真的需要将它添加为子视图控制器?如果我不这样做会怎样?

问题是在某些情况下找到父视图控制器可能很困难。UIView本身对视图控制器一无所知,所以我必须想出自己的方法来跟踪哪个是“当前”视图控制器。除非确实有必要,否则我宁愿不这样做。

到目前为止,在我的实验中,它运行良好,无需添加UIHostingController作为孩子。设备旋转得到适当处理,SwiftUI 的暗模式覆盖 ( .colorScheme()) 甚至可以通过嵌入工作。

4

1 回答 1

1

你只需UIHostingController(rootView:)传入一个 SwiftUI View

您可以通过以下方式将其视为UIView

let myView = UIHostingController(rootView: Text("Hello world!")).view

然后将其添加为子视图,例如:

let parent = UIView()
parent.addSubview(myView)
于 2021-04-15T20:39:49.310 回答