[英]Why is my uitableview cut off with too many cells ? (swift)
我有一个带有uitableview的视图控制器,以显示一些注释。 我使用情节提要和自动布局。
单元格的高度取决于内容。
当我有很多单元格时,我的表视图将被切断,并且无法完全显示。 但是用较少的单元格是正确的。
在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种方法的结果完全相同。 当单元格过多时,表视图不会完全显示。
编辑
屏幕截图。 蓝色是我的滚动视图。
我找到了解决方案。
在我的viewDidAppear中,首先根据其内容大小设置表格视图的框架,然后根据表格视图的高度设置滚动视图的大小。
解决方案是做相反的事情,首先将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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.