我是iOS和自动布局新手。我想实现像iMessage这样的简单UI。结构很简单,
---------------
TableView (for history content)
---------------
charBarView ( contains inputTextView | sendButton )
---------------
inputTextView的约束是使用charBarView的TopSpace / BottomSpace / Leading,以及使用sendButton的Trailing。另外我设置它的高度等于45,而charBarView高度未设置。
问题是,当我尝试处理多行的用户输入时,要实现委托textViewDidChange。代码:
func textViewDidChange(textView: UITextView) {
if textView != inputTextView{
return
}
var textViewFrame = inputTextView.frame
let sizeDiff = inputTextView.contentSize.height - textViewFrame.height
var chatBarViewFrame = chatBarView.frame
chatBarViewFrame.origin.y -= sizeDiff
//chatBarViewFrame.size.height += sizeDiff
chatBarView.frame = chatBarViewFrame
inputTextViewFrame.size = inputTextView.contentSize
inputTextView.frame = inputTextViewFrame
var tableViewFrame = tableView.frame
tableViewFrame.size.height -= sizeDiff
tableView.frame = tableViewFrame
}
当我评论代码时
// chatBarViewFrame.size.height + = sizeDiff
它看起来很好用,但是chatBarView的高度没有变化,所以当charBarView发生变化时按钮会向上移动(我想把它保持在底部)。
当我把代码
chatBarViewFrame.size.height + = sizeDiff
返回,然后更改charBarView的原点和高度,但inputTextView的高度永远不会改变。
我在iOS 8/9上使用xcode 7。
感谢您的帮助!