'iPadOS - SwiftUI in a Safari Extension Not Rendering Properly

I'm writing a simple credential autofill extension as a means of playing around with SwiftUI on iOS. However, I'm finding that on iPadOS the SwiftUI View does not render properly. My CredentialProviderViewController is called at the beginning of the extension lifecycle, and is responsible for loading the SwiftUI View. It looks like this:

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)
    }
}

My SwiftUI AutofillView is very simple and looks like this:

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

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

On iPhone, this renders exactly as I'd expect, with the words "LOCK SCREEN" appearing in the center of the View when the extension loads. However, on iPad the View is displayed in a modal window and the contents are not rendered properly. In fact, only the slightest bit of the "L" is displayed. (See screenshot)

enter image description here

I'm sure I'm missing something or not instantiating my SwiftUI View properly. I'm just not sure where. Any thoughts?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source