Kunal Katiyar
Kunal Katiyar

Reputation: 404

How do I change the height of this UIViewRepresentable?

I found this code on the web :

struct CustomTextField: UIViewRepresentable {
    @Binding var text: String
    @State var placeholder: String
    func makeCoordinator() -> Coordinator {
        Coordinator(text: $text)
    }

    func makeUIView(context: Context) -> UITextField {
        let textField = UITextField()
        textField.borderStyle = .roundedRect
        textField.placeholder = placeholder

        textField.autocapitalizationType = .none
        textField.autocorrectionType = .no
        textField.spellCheckingType = .no
        textField.keyboardType = .URL
        textField.frame = CGRect(x: 0, y: 0, width: 20.00, height: 10)
        textField.delegate = context.coordinator
        return textField
    }

    func updateUIView(_ view: UITextField, context: Context) {
        view.text = text
    }
}

extension CustomTextField {
    class Coordinator: NSObject, UITextFieldDelegate {
        @Binding var text: String

        init(text: Binding<String>) {
            _text = text
        }

        func textFieldDidChangeSelection(_ textField: UITextField) {
            DispatchQueue.main.async {
                self.text = textField.text ?? ""
            }
        }
    }
}

The code works absolutely fine. The problem with this is that I am not able to find a suitable way to increase the height of this. As you can see, I tried to use a CGRect as the frame, to no effect. How can I change the size (particularly height in my specific scenario) of this custom UIViewRepresentable?

Upvotes: 0

Views: 4259

Answers (1)

Phil Dukhov
Phil Dukhov

Reputation: 87734

Just the same you would do with any other SwiftUI view:

CustomTextField(text: $text, placeholder: "")
// constant
    .frame(height: 100)
// fill available height
    .frame(maxHeight: .infinity)

If you wanna make it respect intrinsicContentSize, check out this answer

Upvotes: 1

Related Questions