簡體   English   中英

如何讓我的 SwiftUI UIViewRepresentable 在預覽中尊重內部內容大小?

[英]How do I make my SwiftUI UIViewRepresentable respect intrinsicContentSize in previews?

當我在 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

將以下內容添加到您的 updateUIView 函數中:

uiView.setContentHuggingPriority(.defaultHigh, for: .vertical)
uiView.setContentHuggingPriority(.defaultHigh, for: .horizontal)

您還可以從SwiftUI 端限制UIViewRepresentable大小。

為此,您可以使用fixedSize

struct Label_Previews: PreviewProvider {
    static var previews: some View {
        Label()
            .fixedSize()
            .previewLayout(.sizeThatFits)
    }
}

您還可以僅在一維中修復視圖大小:

.fixedSize(horizontal: false, vertical: true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM