Posts

Post not yet marked as solved
0 Replies
337 Views
In iOS 17, whenever I change the height of a UIHostingController in a animation block, the root SwiftUI.View ignores it: class TestAnimationController: UIViewController { var heightConstraint: NSLayoutConstraint! // a basic trigger override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) { super.touchesEnded(touches, with: event) heightConstraint.constant = heightConstraint.constant == 300 ? 100 : 300 UIView.animate(withDuration: 1.0) { self.view.layoutIfNeeded() } } override func viewDidLoad() { super.viewDidLoad() let content = UIHostingController(rootView: Color.red) addChild(content) view.addSubview(content.view) content.view.translatesAutoresizingMaskIntoConstraints = false heightConstraint = contentView.heightAnchor.constraint(equalToConstant: 100) heightConstraint.isActive = true contentView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true contentView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true contentView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true content.didMove(toParent: self) } } The result is terrible: It was not the case in iOS 14.5: Does someone have a workaround?
Posted
by gaetanz.
Last updated
.