在Swift中换行标签

3

我搜索了这个问题,但是我找到的解决方法对我没有用。我有一个文本框。当用户在文本框中写入内容时,它会将其写入标签中。该标签位于图像视图上,当标签达到图像视图的限制时。我希望标签换行并进入第二行。现在它是这样的,但不起作用。

    @IBAction func textchanged(_ sender: UITextField) { 
    if(mylabel.frame.minX < imageview.frame.minX && mylabel.frame.maxX > imageview.frame.maxX)
    {
    mylabel.frame = CGRect(x: mylabel.frame.origin.x, y: mylabel.frame.origin.y, width: mylabel.frame.width, height: mylabel.frame.height * 2 )
    mylabel.numberOfLines = 2
    mylabel.lineBreakMode = NSLineBreakMode.byWordWrapping
    mylabel.sizeToFit()
    }
    mylabel.numberOfLines = lines
    mylabel.text = textfield.text
    mylabel.sizeToFit()
}

screenshot


3
尝试这个:label.numberOfLines = 0。 - TheAppMentor
2个回答

2
从Xib中删除标签的高度约束(如果您已设置高度约束),并使用以下内容。
label.lineBreakMode = NSLineBreakMode.ByWordWrapping
label.numberOfLines = 0
label.text = textfield.text

它没有高度约束。 - Emre Önder

0
尝试在委托函数中更新标签。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool

同时确保 uitextfield 的代理已正确设置


它给出了这个错误: Terminating app due to uncaught exception 'NSInvalidArgumentException',reason: '-[instayaz2.ViewController textFieldShouldEndEditing:]:无法识别的选择器发送到实例0x7fed1640a7d0' - Emre Önder
代理类似于这个;textfield.delegate = self textfield.addTarget(self, action: #selector(UITextFieldDelegate.textFieldShouldEndEditing(:)), for: UIControlEvents.editingChanged) panRecognizer.addTarget(self, action: #selector(ViewController.draggedView(:))) - Emre Önder
尝试将textfield.delegate设置为self。 - Alex Thomas

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