2015-02-08 15 views
7

Jak można textField być zmieniany w zależności od zawartości podczas korzystania z automatycznego układu w aplikacji iOS napisane w Swift?Resize textField oparciu o zawartość

Pole tekstowe rozmiaru jak będzie to konieczne, aby dopasować swoją zawartość gdy widok ładunki, a także, gdy użytkownik pisze.

Idealnie pole tekstowe zatrzyma rozmiaru w pewnym momencie, powiedzmy, 6 linii, i stać przewijania.

Odpowiedz

6

Musisz użyć UITextView zamiast UITextField

Następnie można użyć metody sizeThatFits.

Ale najpierw trzeba wiedzieć, jak wysoko jedna linia będzie. Można uzyskać te informacje za pomocą lineHeight:

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

Następnie wystarczy wywołać metodę siteThatFits wewnątrz metody viewDidLoad i ustawić maxheight (line * 6) jako TextView-height:

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

Dlaczego używasz 2 razy 'yourTextview.sizeThatFits (...)'? – milo526

+0

Masz rację. Zmieniłem to, że – Christian

+0

jest jakikolwiek sposób na zwiększenie liczby linii UITextField? @ Chrześcijanin –

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)) 
}