如何在 SwiftUI 中更改 UIViewRepresentable 内的 UITextField 大小

Eli*_*rov 4 uikit ios swift swift4 swiftui

我想制作一个简单的自定义 UITextField,但我不知道如何设置其高度。

问题是 UITextField 扩展以填充父级,我意识到我可以.frame()在 上设置修饰符UINumberTextView,但这不是一个好的解决方案,因为您不需要在 SwiftUI TextField 上执行此操作。我对此感到非常沮丧,因为我在任何地方都找不到答案,而且这是一个如此简单的问题。

这是我的代码 - 设置textfield.frame没有任何效果。

struct UINumberTextView: UIViewRepresentable {

    @Binding var text: String

    func makeUIView(context: Context) -> UITextField {
        let textfield = UITextField()
        textfield.keyboardType = .numberPad
        textfield.frame = CGRect(origin: .zero, size: CGSize(width: .max, height: 44))
    
        return textfield
    }

    func updateUIView(_ uiView: UITextField, context: Context) {
        uiView.text = text
    }
}
Run Code Online (Sandbox Code Playgroud)

预览如下

以下是此代码在预览中的外观。

Ric*_*zio 9

您必须更改压缩阻力优先级

textField.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
Run Code Online (Sandbox Code Playgroud)