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