如何以编程方式创建动态文本字段

时间:2018-07-16 09:43:55

标签: ios swift dynamic uitextfield xcode8

当用户单击视图上的某个位置时,我想添加一个动态文本字段。文本字段应随用户键入而增加大小。目前,我正在使用以下代码

textfield = UITextField(frame: rect)
            textfield.backgroundColor = UIColor.clear
            textfield.layer.borderColor = UIColor.clear.cgColor
            textfield.autocorrectionType = UITextAutocorrectionType.no
            textfield.textColor = UIColor.blue
            textfield.textAlignment = .right
            textfield.layer.borderWidth = 1.0
            textfield.delegate = self
            textfield.becomeFirstResponder()

但是此文本字段不会自动增加高度和宽度。

2 个答案:

答案 0 :(得分:1)

您可以尝试

class ViewController: UIViewController , UITextViewDelegate {

    @IBOutlet weak var textView: UITextView!

    override func viewDidLoad() {
        super.viewDidLoad()

        textView.delegate = self 
    }

   func textViewDidChange(_ textView: UITextView) {

       let ff = textView.text! as NSString

       let rr = ff.size(withAttributes: [NSAttributedStringKey.font:UIFont(name: "Helvetica", size: 17)])

       textView.frame = CGRect(origin: textView.frame.origin, size: rr)
   }

}

//

阿拉伯语

func textViewDidChange(_ textView: UITextView) {

    let ff = textView.text! as NSString

   let rr = ff.size(withAttributes: [NSAttributedStringKey.font:UIFont(name: "Helvetica", size: 17)!])

    textView.frame = CGRect(origin:CGPoint(x: self.view.frame.width - rr.width, y: textView.frame.origin.y), size: rr)

 }

enter image description here

答案 1 :(得分:0)

请按照以下步骤进行操作。

  1. 在创建视图时单击视图时创建UITextView 现在的UITextField。
  2. 设置委托并实现诸如textViewDidChange或UITextViewTextDidChange通知之类的委托方法,以在文本更改时获取回调。
  3. 在回调方法内部设置UITextView框架的宽度和高度 其内容大小属性的宽度和高度!编码愉快!

如果需要更多帮助,请告诉我。