小编Joh*_*era的帖子

当 superview 在 vi​​ewDidAppear 之前翻译时,UIHostingController 视图的转换不同步

给定: 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)

uikit ios swiftui uihostingcontroller

6
推荐指数
1
解决办法
781
查看次数

标签 统计

ios ×1

swiftui ×1

uihostingcontroller ×1

uikit ×1