web-dev-qa-db-fra.com

Comment puis-je faire en sorte que mon SwiftUI UIViewRepresentable respecte intrinsicContentSize dans les aperçus?

Lorsque je crée une vue dans SwiftUI et la restitue dans un aperçu Xcode, en utilisant PreviewLayout.sizeThatFits, l'aperçu ajuste sa taille en fonction de son contenu. Lorsque j'importe une vue UIKIt à l'aide de UIViewRepresentable, elle apparaît avec un cadre de taille d'appareil complet.

Existe-t-il un moyen de faire respecter SwiftUI les sous-classes intrinsicContentSize des 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
11
knellr

Ajoutez ce qui suit à votre fonction updateUIView:

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