在 iOS 15,UIHostingController 正在为其托管 SwiftUI 视图 (_UIHostingView) 添加一些奇怪的额外填充
On iOS 15, the UIHostingController is adding some weird extra padding to its hosting SwiftUI view (_UIHostingView)
在 iOS 15 日,UIHostingController
正在为其托管 SwiftUI 视图 (_UIHostingView
) 添加一些奇怪的额外填充。
见下方截图(蓝色 = 额外 space,红色 = 实际视图):
有人知道为什么会这样吗?
我已经报告了这个错误,Apple 伙计们:FB9641883
PD:我有一个工作项目重现了我附加到反馈助手问题的问题。谁要的话我也可以上传
我试图找出为什么会发生这种情况,但运气不佳。我发现修复它的唯一方法是在 UIHostingController
:
的子类中为其固有内容大小设置高度约束
private var heightConstraint: NSLayoutConstraint?
override open func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 15.0, *) {
heightConstraint = view.heightAnchor.constraint(equalToConstant: view.intrinsicContentSize.height)
NSLayoutConstraint.activate([
heightConstraint!,
])
}
}
override open func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
heightConstraint?.constant = view.intrinsicContentSize.height
}
我发现子类化 UIHostingController
如下解决了额外填充的问题:
final class HostingController<Content: View>: UIHostingController<Content> {
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
view.setNeedsUpdateConstraints()
}
}
它还修复了 UIHostingController 在其 SwiftUI 视图更改大小时无法正确调整大小的问题。
在 iOS 15 日,UIHostingController
正在为其托管 SwiftUI 视图 (_UIHostingView
) 添加一些奇怪的额外填充。
见下方截图(蓝色 = 额外 space,红色 = 实际视图):
有人知道为什么会这样吗?
我已经报告了这个错误,Apple 伙计们:FB9641883
PD:我有一个工作项目重现了我附加到反馈助手问题的问题。谁要的话我也可以上传
我试图找出为什么会发生这种情况,但运气不佳。我发现修复它的唯一方法是在 UIHostingController
:
private var heightConstraint: NSLayoutConstraint?
override open func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 15.0, *) {
heightConstraint = view.heightAnchor.constraint(equalToConstant: view.intrinsicContentSize.height)
NSLayoutConstraint.activate([
heightConstraint!,
])
}
}
override open func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
heightConstraint?.constant = view.intrinsicContentSize.height
}
我发现子类化 UIHostingController
如下解决了额外填充的问题:
final class HostingController<Content: View>: UIHostingController<Content> {
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
view.setNeedsUpdateConstraints()
}
}
它还修复了 UIHostingController 在其 SwiftUI 视图更改大小时无法正确调整大小的问题。