3

这是我的 xib 文件:

在此处输入图像描述

如您所见,我有UITableView一个tableHeaderView(橙色)!在运行时,一切都显示正确,除非标题标签有不止一行,而不是UILabelget´s 被典型的“..”切断。我已经改成numberOfLines0了!

我认识到问题是整个 tableHeaderView 的高度!这就是我在代码中计算高度的方式:

[self.headerView setNeedsLayout];
[self.headerView layoutIfNeeded];

CGFloat height = [self.headerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height + self.headerView.frame.origin.y;

CGRect headerFrame = self.headerView.frame;
headerFrame.size.height = height;
self.headerView.frame = headerFrame;

[self.tableView setTableHeaderView:self.headerView];

但是在运行时 tableHeaderView 太小而无法显示 2 或 3 或 4 行标题标签。可能是什么问题呢?

4

2 回答 2

1

我认为您正在努力将您的内容放入 tableview 标题中,该标题旨在包含相对较小的静态内容。

假设您想要的是您的表格视图保持在橙色视图的底部,并且橙色视图与表格视图一起滚动(即不一直停留在屏幕顶部),我将添加一个滚动视图父级橙色视图和表格视图,并禁用表格视图滚动功能。

然而,这意味着将您的 UITableViewController 换成 UIViewController。

例如。

-- UIScrollView
  |
  -- UIView (orange view)
  | |
  | -- subview 1
  | -- subview 2
  | -- etc.
  |
  -- UITableView (scrollEnabled = NO)

使用 AutoLayout,您可以使橙色视图自动调整大小以适应其内容,这将“下推” UITableView。当用户垂直滑动时,根滚动视图将捕获事件,并相应地滚动整个(橙色视图 + 表格视图),产生与橙色视图是表格视图标题相同的效果。

于 2015-01-12T12:02:28.980 回答
0

动态设置 tableHeaderView 高度

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    if let headerView = tableView.tableHeaderView {

        let height = headerView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
        var headerFrame = headerView.frame

        //Comparison necessary to avoid infinite loop
        if height != headerFrame.size.height {
            headerFrame.size.height = height
            headerView.frame = headerFrame
            tableView.tableHeaderView = headerView
        }
    }
}

帖子:https ://newbedev.com/setting-tableheaderview-height-dynamically

于 2021-11-10T22:16:41.183 回答