2015-02-08 11 views
7

Wie kann eine textField basierend auf dem Inhalt angepasst werden, während das automatische Layout in einer in Swift geschriebenen iOS-Anwendung verwendet wird?Textgröße ändernFeld basierend auf Inhalt

Die Größe des Textfelds wird bei Bedarf angepasst, um den Inhalt anzupassen, wenn die Ansicht geladen wird und der Benutzer gerade tippt.

Im Idealfall würde das Textfeld an einem bestimmten Punkt (z. B. 6 Zeilen) nicht mehr skalieren und scrollbar werden.

Antwort

6

Sie haben eine UITextView anstelle eines UITextField

Dann verwenden Sie die sizeThatFits Methode verwenden können.

Aber zuerst müssen Sie wissen, wie hoch eine Zeile sein wird. Sie können diese Informationen erhalten, indem lineHeight mit:

var amountOfLinesToBeShown:CGFloat = 6 
var maxHeight:CGFloat = yourTextview.font.lineHeight * amountOfLinesToBeShown 

Danach, rufen Sie einfach die siteThatFits Methode in Ihrem viewDidLoad Methode und stellen Sie die maxHeight (line * 6) als Textview-height:

yourTextview.sizeThatFits(CGSizeMake(yourTextview.frame.size.width, maxHeight)) 
+0

Warum verwenden Sie 2 Mal die 'yourTextview.sizeThatFits (...)'? – milo526

+0

Sie haben Recht. Ich habe das geändert – Christian

+0

Gibt es eine Möglichkeit, wie wir die Anzahl der Zeilen eines UITextField erhöhen können? @Christian –

1

Swift 3

var textView : UITextView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    textView = UITextView() 
    textView.sizeThatFits(CGSize(width: textView.frame.size.width, height: textView.frame.size.height)) 
}