当我在SwiftUI中创建视图并在Xcode预览中使用PreviewLayout.sizeThatFits
渲染它时,预览会根据其内容调整其大小。当我使用UIViewRepresentable
导入UIKIt视图时,它会显示一个完整的设备大小框架。
有没有办法让SwiftUI尊重UIView
子类的intrinsicContentSize
?
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
字符串
3条答案
按热度按时间5kgi1eie1#
将以下内容添加到updateUIView函数:
字符串
q5iwbnjs2#
您也可以从 *SwiftUI侧 * 限制
UIViewRepresentable
的大小。你可以使用
fixedSize
:字符串
也可以仅在一个维度上固定视图大小:
型
5kgi1eie3#
使用Swift 5,SwiftUI 15,以下是一个使用布局约束的视图层次结构的解决方案。
关键是将SwiftUI视图用来设置视图高度的绑定传递给representable。representable通过询问系统适合的最小大小来设置高度的值。
这适用于UIViewRepresentable和UIViewControllerRepresentable。
字符串
然后在SwiftUI视图中,设置框架高度以匹配可表示对象中的值。
型
普通情况下的 Package 视图控制器示例
型
在Xcode 15中,预览就像
型