效果图:
只需要在UITextView的代理方法中,实现以下代码即可。
/*
1.sizeThatFit:会计算出控件的最优的size,但是不会立刻改变控件的大小
2.sizeToFit:会计算出最优的size,并且会立刻修改控件的size为当前最优的size
*/
//随着输入自动改变输入框的高度和位置
func textViewDidChange(textView: UITextView){
let fixedWidth = textView.frame.size.width
let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.max))
//当最合适的高度大于现在的高度时,开始改变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
}
}