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

4

我想制作一个简单的自定义UITextField,但我无法弄清如何设置它的高度。

问题在于UITextField会扩展以填充其父级视图,我意识到可以在UINumberTextView上设置.frame()修饰符,但这不是一个好的解决方案,因为在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
    }
}

以下是预览的样子

这段代码在预览中的样子。

1个回答

9

您需要更改压缩阻力优先级。

textField.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)

非常感谢您提供这个,我已经寻找了相当长的时间! - mike_t

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接