Ios 更改NSLayoutConstraint';s常数
我在tableView上添加了一个底部约束,并且在键盘出现时以编程方式更改约束的常量。tableview的框架会调整大小,但contentSize不会更新,为什么?如何强制它重新计算 我尝试过很多方法Ios 更改NSLayoutConstraint';s常数,ios,uitableview,uiscrollview,keyboard,Ios,Uitableview,Uiscrollview,Keyboard,我在tableView上添加了一个底部约束,并且在键盘出现时以编程方式更改约束的常量。tableview的框架会调整大小,但contentSize不会更新,为什么?如何强制它重新计算 我尝试过很多方法 NSNotificationCenter.defaultCenter().addObserverForName(UIKeyboardDidShowNotification, object: nil, queue:NSOperationQueue.mainQueue(), usingBlock: {
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()*/
}
})
tableView.contentSize
不会更改
因为您更新了tableView的bottomConstraint
。只有tableView.frame
将被更改。但是contentSize
属性将是相同的
tableView.contentSize将在tableView中的单元格更改时更新。例如,插入、删除、重新加载。如果我没有错,您必须重新加载单元格以更新行高。