2016-11-19 2 views
0

Ich habe ein Label, das seinen Text aus dem Textfeld bezieht und eine Grenze in der Bildbreite hat, wo es sich befindet. Ich möchte eine neue Zeile hinzufügen, wenn das Limit erreicht ist. Allerdings konnte ich es nicht mit "\ n" und Wordwrapping-Funktion tun. Außerdem muss ich die Höhe und Breite von UILabel auf genau die Textgröße einstellen. Ich meine, wenn es zwei Zeilen hat sollte die Höhe für zwei Zeilen nur nicht viel und genau das gleiche für die Breite sein.UILabel nach neuer Zeile neu anordnen

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 
} 

Antwort

0

Warum können Sie lineBreakMode nicht verwenden? Meiner Meinung nach sollten Sie eine Grundeinstellung in Ihrem viewDidLoad definieren oder so:

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 
} 

Dann in Ihrem textfieldShouldEndEditing Sie den Text und die Höhe

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

Da das Etikett im Innern des Imageview ziehbar ist, wenn ich gesetzt tun es ist so, dass das Etikett nicht ziehbar sein kann, da Rahmengrenzen bereits den Rahmenwerten von Bildansichten entsprechen. –