繁体   English   中英

iPadOS - Safari 扩展中的 SwiftUI 未正确呈现

[英]iPadOS - SwiftUI in a Safari Extension Not Rendering Properly

我正在编写一个简单的凭证自动填充扩展,作为在 iOS 上玩 SwiftUI 的一种方式。 但是,我发现在 iPadOS 上 SwiftUI View无法正确呈现。 我的CredentialProviderViewController在扩展生命周期开始时被调用,并负责加载 SwiftUI View 它看起来像这样:

class CredentialProviderViewController: ASCredentialProviderViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    override func prepareCredentialList(for serviceIdentifiers: [ASCredentialServiceIdentifier]) {
        let services: [String] = serviceIdentifiers.map { $0.identifier }
        let autofillView = AutofillView(services: services,
                                        extensionContext: self.extensionContext)
        
        let vc = UIHostingController(rootView: autofillView)
        vc.view.translatesAutoresizingMaskIntoConstraints = false
        vc.view.frame = view.bounds
        
        view.addSubview(vc.view)
        addChild(vc)
    }
}

我的 SwiftUI AutofillView非常简单,看起来像这样:

struct AutofillView: View {
    
    let services: [String]
    var extensionContext: ASCredentialProviderExtensionContext? = nil

    var body: some View {
        NavigationView {
            Text("LOCK SCREEN")
        }
    }
}

在 iPhone 上,这完全符合我的预期,当扩展加载时,“锁屏”字样出现在View的中心。 但是,在 iPad 上, View以模态 window 显示,并且内容未正确呈现。 事实上,只显示了最轻微的“L”。 (见截图)

在此处输入图像描述

我确定我遗漏了一些东西或没有正确实例化我的 SwiftUI View 我只是不确定在哪里。 有什么想法吗?

与其将其添加到容器视图或子视图中,不如将 UIHostingController 呈现为视图 controller

let services: [String] = serviceIdentifiers.map { $0.identifier }
let autofillView = AutofillView(services: services,
                                    extensionContext: self.extensionContext)
let vc = UIHostingController(rootView: autofillView)
vc.modalPresentationStyle = .fullScreen
self.present(vc, animated: false)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM