动态改变 UITableView 高度

Posted

技术标签:

【中文标题】动态改变 UITableView 高度【英文标题】:Dynamically changing UITableView height 【发布时间】:2014-05-12 14:21:36 【问题描述】:

在我的应用程序中,我有一个UITableView,其框架上方有一个UIView

 -----------
|  UIView   |
 -----------
|           | 
|           |
|UITableView|
|           |
|           |
 -----------

当我向上滚动tableView 时,UIView 被向上推出屏幕,而当我向下滚动tableView 的内容时,UIView 被推回屏幕。 UIView 的所有移动都以与用户滚动相同的速度发生。因此,如果用户滚动 10px,UIView 只会移动 10px。

我遇到的问题是调整tableView 的大小。我希望它根据 UIView 的 y 位置调整大小,这样就不会有任何空间。

UIView 的移动工作正常,但 tableView 的大小调整完全没有。我真的冻结了主线程,它真的很前卫。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView


    Some code for moving the UIView...

    UpdateFrameY(_tableViewController.tableView, diff);
    UpdateFrameHeightOnDiff(_tableViewController.tableView, diff);

有没有更好的方法可以做到这一点? 我实际上是在尝试从 FB 应用程序中复制这种行为。它在那里工作得非常顺利。 非常感谢!

【问题讨论】:

Change UITableView height dynamically 的可能重复项 我想知道更多细节,比如单元格高度是否随着表格高度更新而改变。一个示例项目将是完美的。 【参考方案1】:

不要更改 uitableview 高度。只需更改其内容插图并将您的 UIView 放在 UITableView 上(因此 UIView 和 UITableView 将具有相同的帧原点);您将获得一些性能改进。

【讨论】:

我实际上试过这个,但我的内容插入有问题,因为我在 UITableViewController 中使用了 UIRefreshControl。这总是与内容插图混淆。 您可以尝试不为内容插图设置动画。把它修好。当 UITableView 将滚动到最顶部的单元格时,顶部的 UIView 将始终具有其最大的框架

以上是关于动态改变 UITableView 高度的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 动态高度不改变 iOS

动态改变 UITableView 高度

UITableView:改变 TableHeaderView 的高度

改变 UITableView Customcell 的高度

UITableView:单击按钮时如何动态更改单元格高度?

动态改变 UITableViewCell 高度 - Swift 4