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

Posted

技术标签:

【中文标题】如何在 SwiftUI 中更改 UIViewRepresentable 内的 UITextField 大小【英文标题】:How to change UITextField size inside UIViewRepresentable in SwiftUI 【发布时间】:2021-04-21 07:20:47 【问题描述】:

我想做一个简单的自定义 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】:

你必须改变抗压优先级

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

【讨论】:

以上是关于如何在 SwiftUI 中更改 UIViewRepresentable 内的 UITextField 大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中动画/过渡文本值更改

如何在 SwiftUI 中触发状态更改/重绘切换更改

如何在 SwiftUI 中使用 UIButton 更改 @State var

如何在 SwiftUI 中更改表单的背景颜色?

SwiftUI - 如何在文本视图中更改自定义 SF 符号的颜色?

如何在swiftui中使用选择器更改文本大小