[英]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.