Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIViewRepresentable大小本身与其中的UIKit控件的关系如何?_Ios_Swift_Swiftui - Fatal编程技术网

Ios UIViewRepresentable大小本身与其中的UIKit控件的关系如何?

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(

我完全感到困惑,无法找到关于如何包装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
    }
}
结果就是这个屏幕。请注意,顶部的文本只占所需的大小,而SwiftUIText则占据了所有垂直空间。在代码的其他迭代中,我看到它缩小了,并没有占用少量的水平空间

有人能解释一下我如何指定我的组件应该(A)使用所有可用的宽度和(B)只使用它需要的高度


最简单快捷的解决方案:

        SwiftUIText(text: $helperText).fixedSize()

更新:

        SwiftUIText(text: $helperText)
            .fixedSize(horizontal: false, vertical: true)


哦,哇!那帮了大忙!谢谢另一个快速的问题是,有没有办法强制组件占据其所在堆栈的全部宽度?
        SwiftUIText(text: $helperText)
            .fixedSize(horizontal: false, vertical: true)