2015-02-08 160 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)) 
}