Ios UIViewRepresentable大小本身与其中的UIKit控件的关系如何?
我完全感到困惑,无法找到关于如何包装UIKit组件并使其大小正确的文档。下面是包装UILabel的最简单示例:Ios UIViewRepresentable大小本身与其中的UIKit控件的关系如何?,ios,swift,swiftui,Ios,Swift,Swiftui,我完全感到困惑,无法找到关于如何包装UIKit组件并使其大小正确的文档。下面是包装UILabel的最简单示例: public struct SwiftUIText: UIViewRepresentable { @Binding public var text: String public init(text: Binding<String>) { self._text = text } public func makeUIView(
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
}
}
结果就是这个屏幕。请注意,顶部的文本只占所需的大小,而SwiftUIText则占据了所有垂直空间。在代码的其他迭代中,我看到它缩小了,并没有占用少量的水平空间
有人能解释一下我如何指定我的组件应该(A)使用所有可用的宽度和(B)只使用它需要的高度
最简单快捷的解决方案:
SwiftUIText(text: $helperText).fixedSize()
更新:
SwiftUIText(text: $helperText)
.fixedSize(horizontal: false, vertical: true)
哦,哇!那帮了大忙!谢谢另一个快速的问题是,有没有办法强制组件占据其所在堆栈的全部宽度?
SwiftUIText(text: $helperText)
.fixedSize(horizontal: false, vertical: true)