给定: UIHostingController 托管在 UIKit 超级视图中。
时间: Superview 变换在 viewDidAppear 之前修改。在此示例中,向下移动了 200 点。
然后:对超级视图变换的后续更改将不同步。在此示例中,我将其移回原来的位置。尽管 SwiftUI 内容似乎位于正确的位置,但点击注册仍位于原始位置,因此为了点击,我需要点击正在显示的区域下方。(见截图)
Xcode 12.3 - iPhone 8 Sim (iOS 14)
struct ContentView: View {
var body: some View {
Button(action: { print("Testing 123") }, label: {
Text("Button")
})
.padding()
.background(Color.gray)
}
}
class RootVC: UIViewController {
let hostingVC = UIHostingController(rootView: ContentView())
override func viewDidLoad() {
super.viewDidLoad()
hostingVC.view.translatesAutoresizingMaskIntoConstraints = false
view.translatesAutoresizingMaskIntoConstraints = false
addChild(hostingVC)
view.addSubview(hostingVC.view)
hostingVC.didMove(toParent: self)
hostingVC.view.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
hostingVC.view.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true …Run Code Online (Sandbox Code Playgroud)