Я полностью озадачен и не могу найти документацию о том, как обернуть 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) только высота, которая ему нужна?
