【问题标题】:UITableViewCell Percentage Based Height with Minimum HeightUITableViewCell 基于百分比的高度和最小高度
【发布时间】:2015-06-24 01:17:25
【问题描述】:

我有一个自定义表格视图单元格,我让自动布局管理它的高度。

tableView.estimatedRowHeight = 44 
tableView.rowHeight = UITableViewAutomaticDimension

在 TableViewCell 内我有一个子视图:

contentView.addSubview(subView)

我希望 TableViewCell 为屏幕高度的 40% 或 250pts。

我已经这样做了:

self.contentView.autoSetDimension(.Height, toSize: round(UIScreen.mainScreen().bounds.height * 0.40), relation: .GreaterThanOrEqual)
self.contentView.autoPinEdgeToSuperviewEdge(.Leading)
self.contentView.autoPinEdgeToSuperviewEdge(.Trailing)
self.subView.autoSetDimension(.Height, toSize: 250, relation: .GreaterThanOrEqual)

subView.autoPinEdgeToSuperviewEdge(.Top)
subView.autoPinEdgeToSuperviewEdge(.Leading)
subView.autoPinEdgeToSuperviewEdge(.Trailing)
subView.autoPinEdgeToSuperviewEdge(.Bottom)

这在我看来有点草率。这是最好的方法吗?

【问题讨论】:

  • 当您希望单元格具有恒定高度时,您想使用 UITableViewAutomaticDimension 的任何特殊原因?
  • 这是因为表格视图中的其他单元格具有动态高度
  • 我会实现 heightForRowAtIndexPath 并返回屏幕高度的 40% 或 250pts,在你需要的时候只返回 UITableViewAutomaticDimension,这将大大提高滚动时的性能
  • 嗯,所以可以使用自动调整单元格大小并仍然使用 heightForRowAtIndexPath?此单元格不会自动调整大小,但我的 tableView 中的其他单元格会根据内容量进行调整
  • 是的,如果你在 heightForRow 中返回 UITableViewAutomaticDimension,它会说“这个特定的 indexPath 是自动调整大小的”.....(只要你已经设置了 estmatedHeight)

标签: ios xcode swift uitableview xcode6


【解决方案1】:

您不需要向contentView 添加约束,它会自动将其大小调整到subView,试试这个:

subView.autoSetDimension(.Height, toSize: round(UIScreen.mainScreen().bounds.height * 0.40), relation: .GreaterThanOrEqual)
subView.autoSetDimension(.Height, toSize: 250, relation: .GreaterThanOrEqual)

subView.autoPinEdgesToSuperviewEdgesWithInsets(UIEdgeInsetsZero)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2021-02-22
    • 2019-09-30
    • 2014-03-20
    • 2012-02-20
    相关资源
    最近更新 更多