How do I properly mix SwiftUI Views with Auto Layout Constraint animations?

I have a SwiftUI View I've introduced to a UIKit app, using UIHostingController. The UIView instance that contains the SwiftUI view is animated using auto layout constraints. In this code block, when a view controller's viewDidAppear method I'm creating the hosting controller and adding its view as a subview of this view controller's view, in addition to doing the Container View Controller dance.

override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        let hostingViewController = UIHostingController(rootView: TestView())
        hostingViewController.view.translatesAutoresizingMaskIntoConstraints = false

        addChild(hostingViewController)
        view.addSubview(hostingViewController.view)

        let centerXConstraint = hostingViewController.view.centerXAnchor.constraint(equalTo: view.centerXAnchor)
        let topConstraint = hostingViewController.view.topAnchor.constraint(equalTo: view.topAnchor)
        widthConstraint = hostingViewController.view.widthAnchor.constraint(equalToConstant: 361)
        heightConstraint = hostingViewController.view.heightAnchor.constraint(equalToConstant: 342)

        NSLayoutConstraint.activate([centerXConstraint, topConstraint, widthConstraint, heightConstraint])

        hostingViewController.didMove(toParent: self)

        self.hostingViewController = hostingViewController
    }

I add a button to the UI which will scale the UIHostingViewController by adjusting its height and width constraints. When it's tapped, this action method runs.

@IBAction func animate(_ sender: Any) {
        widthConstraint.constant = 120.3
        heightConstraint.constant = 114.0

        UIView.animate(withDuration: 0.5) {
            self.view.layoutIfNeeded()
        }
    }

The problem is, the SwiftUI view's contents "jump" at the start of the animation to the final height, then animate into place. I see this both using UIView.animate the UIKit way, or creating a SwiftUI animation and calling `UIView.

What else do I need to add to make this animate smoothly?

Not sure, total guess here, but what happens if you put these two lines inside UIView.animate(withDuration: 0.5), like this:

UIView.animate(withDuration: 0.5) {
    widthConstraint.constant = 120.3
    heightConstraint.constant = 114.0
    self.view.layoutIfNeeded()
}
How do I properly mix SwiftUI Views with Auto Layout Constraint animations?
 
 
Q