Как мне сделать мой SwiftUI UIViewRepresentable уважать intrinsicContentSize в превью? - PullRequest
1 голос
/ 19 июня 2019

Когда я создаю представление в SwiftUI и отображаю его в предварительном просмотре Xcode, используя PreviewLayout.sizeThatFits, предварительный просмотр регулирует его размер в соответствии с его содержимым.Когда я импортирую представление UIKIt, используя UIViewRepresentable, оно отображается с рамкой полного размера устройства.

Есть ли способ заставить 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

1 Ответ

0 голосов
/ 25 июня 2019

Добавьте в функцию updateUIView следующее:

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