Autolayout不适用于嵌套视图

时间:2015-09-18 11:06:30

标签: ios autolayout

我是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。

感谢您的帮助!

0 个答案:

没有答案