2015-02-08 155 views
7

在使用Swift編寫的iOS應用程序中使用自動佈局時,如何根據內容調整textField的大小?根據內容調整textField的大小

當視圖加載時以及用戶輸入時,文本字段將根據需要調整其大小以適應其內容。

理想情況下,文本字段將停止在特定點(例如6行)調整大小,並且變爲可滾動。

回答

6

你必須使用一個UITextView,而不是UITextField

然後,您可以使用sizeThatFits方法。

但首先你必須知道一條線會有多高。您可以通過使用lineHeight獲得這些信息:

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

之後,只需調用siteThatFits方法您viewDidLoad方法內並設置maxHeight(line * 6)爲您的TextView的高度:

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

爲什麼使用2次'yourTextview.sizeThatFits(...)'? – milo526 2015-04-11 17:04:08

+0

你說得對。我改變了 – Christian 2015-04-11 18:22:09

+0

有什麼辦法可以增加UITextField的行數? @Christian – 2015-05-06 10:04:44

1

斯威夫特3

var textView : UITextView! 

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