【发布时间】:2020-03-25 19:23:27
【问题描述】:
我完全感到困惑,无法找到有关如何包装 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
}
}
没有什么特别的,只是一个现在为 SwiftUI 准备好的 UILabel。我会将它包含在一个视图中:
var body: some View {
VStack {
Text("Hello, World!!! \(text)")
.font(.caption1Emphasized)
SwiftUIText(text: $helperText)
}
.background(Color.green)
}
结果就是这个屏幕。请注意顶部的 Text 如何只占用它需要的大小,但 SwiftUIText 占用了所有垂直空间。在代码的其他迭代中,我看到它缩小了,并且不占用少量的水平空间。
谁能解释我如何指定我的组件应该 (A) 用完所有可用的宽度和 (B) 只用它需要的高度?
【问题讨论】: