我在tableView上添加了一个底部约束,当键盘出现时,我以编程方式更改约束的常量。 tableview的框架调整大小,但是contentSize没有更新,为什么?我怎么能强迫它重新计算。
我尝试了很多方法。
NSNotificationCenter.defaultCenter().addObserverForName(UIKeyboardDidShowNotification, object: nil, queue:NSOperationQueue.mainQueue(), usingBlock: {(notification: NSNotification?) -> () in
let keyboardSize = (notification!.userInfo![UIKeyboardFrameBeginUserInfoKey] as? NSValue)!.CGRectValue().size
self.bottomConstraint.constant = keyboardSize.height
self.view.layoutIfNeeded()
if let messageTableViewController2 = messageTableViewController, let messageViewSize2 = messageViewSize {
/*var frame = messageTableViewController2.tableView.frame
frame.size.height = messageViewSize2.height - keyboardSize.height - 44
messageTableViewController2.tableView.frame = frame*/
/*messageTableViewController2.tableView.beginUpdates()
messageTableViewController2.tableView.layoutIfNeeded()
messageTableViewController2.tableView.endUpdates()
var frame = messageTableViewController2.tableView.frame
frame.size.height = messageTableViewController2.tableView.frame.size.height
messageTableViewController2.tableView.frame = frame*/
/*let h = messageTableViewController2.tableView.contentSize.height - keyboardSize.height + 44
println("messageTableViewController2.tableView.contentSize: \(messageTableViewController2.tableView.contentSize) h: \(h)")
messageTableViewController2.tableView.contentSize = CGSizeMake(messageTableViewController2.tableView.contentSize.width, h)*/
/*messageTableViewController2.tableView.setNeedsUpdateConstraints()
messageTableViewController2.tableView.beginUpdates()
messageTableViewController2.tableView.endUpdates()*/
}
})
答案 0 :(得分:0)
tableView.contentSize
不会改变。
因为您更新了tableView的bottomConstraint
。只会更改tableView.frame
。但是contentSize
属性将是相同的。
tableView.contentSize
将会更新。例如,插入,删除,重新加载。