我有一个带有uitableview的视图控制器来显示一些注释。我使用故事板和自动布局。
细胞的高度取决于内容。
当我有很多单元格时,我的tableview被切断,并且没有完全显示。但是对于更少的细胞来说它是正确的。
在viewDidLoad中:
self.commentsTableView.estimatedRowHeight = 93.0
self.commentsTableView.rowHeight = UITableViewAutomaticDimension
在viewDidAppear中,我尝试了两种方法,首先使用高度约束:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.commentsTableView.removeConstraint(self.tableViewHeightConstraint)
self.tableViewHeightConstraint = NSLayoutConstraint(item: self.commentsTableView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: self.commentsTableView.contentSize.height)
self.commentsTableView.addConstraint(self.tableViewHeightConstraint)
self.commentsTableView.setNeedsUpdateConstraints()
self.commentsTableView.updateConstraintsIfNeeded()
}
我也尝试了框架的高度(没有高度限制):
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
var frame:CGRect = self.commentsTableView.frame
frame.size.height = commentsTableView.contentSize.height
self.commentsTableView.frame = frame
}
我对2种方法的结果完全相同。 如果单元格太多,则表格视图不会完全显示。
修改
截图。蓝色是我的滚动视图。
答案 0 :(得分:0)
我找到了解决方案。
在我的viewDidAppear中,我首先根据内容大小设置tableview的框架,然后使用tableview的高度设置scrollview的大小。
解决方法是反过来,首先将scrollview设置为tableview的内容大小,然后使用scrollview的高度调整tableview。它有效!
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.scrollView.contentSize=CGSizeMake(self.scrollView.frame.size.width, self.commentsTableView.frame.origin.y + commentsTableView.contentSize.height)
var frame:CGRect = self.commentsTableView.frame
frame.size.height = scrollView.contentSize.height
self.commentsTableView.frame = frame
}