2016-11-19 2 views
0

У меня есть метка, которая получает текст из текстового поля и имеет ограничение по ширине изображения, где оно включено. Я хочу добавить новую строку, когда предел достиг. Однако я не мог сделать это с помощью функции «\ n» и wordwrapping. Кроме того, мне нужно установить высоту и ширину UILabel точно в размере текста. Я имею в виду, если он имеет две строки, высота должна быть для двух строк, но не слишком и точно такой же для свойства width.Переустановите UILabel после новой строки

func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { 
    if(imageview.frame.width > label.frame.width + 2) 
    { 
    label_test.text = "\(label.frame.width)" 
    label.text = textfield.text 
     if(imageview.frame.width < label.frame.width + 20) 
     { 
      label.lineBreakMode = .byWordWrapping 
      label.text = textfield.text! + "\n" 
      label.textAlignment = NSTextAlignment.center; 
     } 
    } 
    return true 
} 

ответ

0

Почему вы не можете использовать lineBreakMode? На мой взгляд, вы должны определить основные настройки в вашем viewDidLoad или так:

func viewDidLoad() { 
    //Your stuff 
    label.frame.size.width = imageview.frame.width //Define max width 
    label.numberOfLines = 0 //Set infinite number of lines 
    label.lineBreakMode = .byWordWrapping 
} 

Затем в textfieldShouldEndEditing установить текст и высоту

label.text = textfield.text 
label.sizeToFit() //The height is adjusted 
+0

Поскольку метка перетаскивать внутри ImageView, если я делать это так, что метка не будет перетаскиваться, потому что это пределы кадра уже равны значениям кадров изображения. –

Смежные вопросы