【问题标题】:UITableView Dynamic HeightUITableView 动态高度
【发布时间】:2012-09-08 01:55:32
【问题描述】:

我的 ViewController 中有一个 UITableView,它的行有自定义内容。使用- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath方法根据单元格内容动态计算每个单元格的高度。

但是如何设置 UITableView 的高度呢? 因为如果我的表只包含一行,那么在行之后我会在我的表中看到一个大空格? 没有任何属性可以根据内容动态增加或减少表格的高度吗?

【问题讨论】:

    标签: ios uitableview


    【解决方案1】:

    contentSize 将根据您拥有的行数和节数进行调整,如果您想更改表格视图的实际大小,您应该调整frame 属性

    如果只有几行时的白色背景困扰着你,你最好在表格上放置一个 backgroundView 或颜色

    【讨论】:

    • 好的;但是我怎样才能确定我需要增加多少高度?因为,每一行的高度都是不同的,我不知道确切的值。
    • contentSize 应该会自动为你更新,检查一下,如果它小于你可以调整的帧大小
    • 对不起,我无法理解 contentSize 的东西。我如何检查它是否自动更新?我也不能使用背景,因为表格视图下面有一个按钮;所以我放了一个背景按钮和tableview之间会有很大的差距。实际上这对我来说是另一个问题,没有任何方法可以相对定位控件。
    • 如果您希望按钮位于表格底部,请将其添加到表格的 footerView。 contentSize 是一个 UIScrollView 属性,在添加单元格时由表格更新,您需要在设置内容后检查(或自己进行计算,因为您知道单元格的数量及其高度)
    • 感谢您的回答。我需要查看 tableView 的 contentSize 的详细信息。我将它与 UİScrollView 一起使用,但我从未将它用于 tableView
    【解决方案2】:

    试试 contentSize 方法,它继承自 UITableView 的超类 UIScrollView。但是,您可能会发现 contentSize 返回的值不正确或已过期,因此您可能应该先调用 layoutIfNeeded 来重新计算表格的布局。

    [tableView layoutIfNeeded];
    

    // 允许您在绘制周期发生之前执行布局。 //-layoutIfNeeded 提前强制布局。所以它会正确返回大小。就像做梦之前做的一样。

    CGSize tableSize=tableView.contentSize;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 2020-02-07
      • 2014-09-30
      相关资源
      最近更新 更多