Как сам размер UIViewRepresentable по отношению к элементу управления UIKit внутри него? - PullRequest
1 голос
/ 25 марта 2020

Я полностью озадачен и не могу найти документацию о том, как обернуть UIKit-компонент и правильно ли он будет иметь размеры. Вот простейший пример, оборачивающий UILabel:

public struct SwiftUIText: UIViewRepresentable {
    @Binding public var text: String

    public init(text: Binding<String>) {
        self._text = text
    }

    public func makeUIView(context: Context) -> UILabel {
        UILabel(frame: .zero)
    }

    public func updateUIView(_ textField: UILabel, context: Context) {
        textField.text = text
        textField.textColor = .white
        textField.backgroundColor = .black
    }
}

Ничего особенного, просто UILabel теперь готов для SwiftUI. Я включу его в представление:

    var body: some View {
        VStack {
            Text("Hello, World!!! \(text)")
                .font(.caption1Emphasized)

            SwiftUIText(text: $helperText)
        }
        .background(Color.green)
    }

Результат - этот экран. Обратите внимание, что текст сверху занимает только необходимый ему размер, но SwiftUIText занимает все это вертикальное пространство. В других итерациях кода я видел его сжатым и не занимающим небольшого количества горизонтального пространства.

Может кто-нибудь объяснить, как я могу указать, что мой компонент должен (A) использовать все ширина, доступная ему, и (B) только высота, которая ему нужна?

enter image description here

1 Ответ

1 голос
/ 25 марта 2020

Самое простое и быстрое исправление:

demo

        SwiftUIText(text: $helperText).fixedSize()

Обновление:

demo2

        SwiftUIText(text: $helperText)
            .fixedSize(horizontal: false, vertical: true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...