当我在SwiftUI中创建视图并使用PreviewLayout.sizeThatFits
在Xcode预览中呈现视图时,预览会根据其内容调整其大小。当我使用UIViewRepresentable
导入UIKIt视图时,它会显示完整的设备尺寸框架。
是否有一种方法可以使SwiftUI尊重intrinsicContentSize
子类的UIView
?
struct Label: UIViewRepresentable {
func makeUIView(context: UIViewRepresentableContext<Label>) -> UILabel {
return UILabel()
}
func updateUIView(_ uiView: UILabel, context: UIViewRepresentableContext<Label>) {
uiView.text = "Some text"
}
}
#if DEBUG
struct Label_Previews: PreviewProvider {
static var previews: some View {
Group {
Label().previewLayout(.sizeThatFits)
}
}
}
#endif
答案 0 :(得分:1)
您还可以从 SwiftUI 端限制 UIViewRepresentable
的大小。
为此,您可以使用 fixedSize
:
struct Label_Previews: PreviewProvider {
static var previews: some View {
Label()
.fixedSize()
.previewLayout(.sizeThatFits)
}
}
您也可以仅在一维中固定视图大小:
.fixedSize(horizontal: false, vertical: true)
答案 1 :(得分:0)
将以下内容添加到您的updateUIView函数中:
uiView.setContentHuggingPriority(.defaultHigh, for: .vertical)
uiView.setContentHuggingPriority(.defaultHigh, for: .horizontal)