效果圖:
1.gif
只需要在UITextView的代理方法中匀哄,實(shí)現(xiàn)以下代碼即可敬肚。
/*
1.sizeThatFit:會(huì)計(jì)算出控件的最優(yōu)的size,但是不會(huì)立刻改變控件的大小
2.sizeToFit:會(huì)計(jì)算出最優(yōu)的size,并且會(huì)立刻修改控件的size為當(dāng)前最優(yōu)的size
*/
//隨著輸入自動(dòng)改變輸入框的高度和位置
func textViewDidChange(textView: UITextView){
let fixedWidth = textView.frame.size.width
let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
//當(dāng)最合適的高度大于現(xiàn)在的高度時(shí)讨跟,開始改變textView的frame,如果高度大于120了告匠,就不在改變textView的frame了盖淡。
if newSize.height > textView.frame.size.height && newSize.height < 120 {
var newFrame = textView.frame
newFrame.origin.y -= (newSize.height - newFrame.size.height)
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height)
textView.frame = newFrame
}
}