【问题标题】:Why is my uitableview cut off with too many cells ? (swift)为什么我的 uitableview 被太多单元格切断了? (迅速)
【发布时间】:2015-06-25 17:38:26
【问题描述】:

我有一个带有 uitableview 的视图控制器来显示一些 cmets。我使用故事板和自动布局。

单元格的高度取决于内容。

当我有很多单元格时,我的表格视图被切断,并且没有完全显示。但是细胞越少也是正确的。

在 viewDidLoad 中:

self.commentsTableView.estimatedRowHeight = 93.0
self.commentsTableView.rowHeight = UITableViewAutomaticDimension

在 viewDidAppear 中,我尝试了 2 种方法,首先是高度限制:

 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
}

这两种方法的结果完全相同。 单元格过多时,tableview显示不全。

编辑

截图。蓝色是我的滚动视图。

【问题讨论】:

  • 不能滚动tableview?你禁用滚动了吗?
  • 我可以滚动我的 tableview,滚动被禁用,因为我的 tableview 在滚动视图中。我检查确定,我的scrollview的高度没问题,问题出在tableview上。
  • 要么在表格视图中启用滚动,要么需要确保滚动视图的内容大小足够大 - 听起来好像不是。
  • 我在帖子中添加了截图。我增加了滚动视图的高度(蓝色)。
  • 需要确保tableview的frame设置正确,才能完全占据scroll view内容大小

标签: ios uitableview swift autolayout height


【解决方案1】:

我找到了解决办法。

在我的 viewDidAppear 中,我首先根据其内容大小设置 tableview 的框架,然后将滚动视图的大小设置为 tableview 的高度。

解决方法是反其道而行之,先将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

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-12
    • 2016-05-13
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多