繁体   English   中英

为什么uitableview的单元格过多? (迅速)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM