【问题标题】:Calculate tableHeaderView height with autolayout使用自动布局计算 tableHeaderView 高度
【发布时间】:2015-03-10 03:06:35
【问题描述】:

这是我的 xib 文件:

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

我认识到问题是整个 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 行标题标签。可能是什么问题?

【问题讨论】:

标签: ios objective-c uitableview autolayout tableheader


【解决方案1】:

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

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

这意味着将你的 UITableViewController 换成 UIViewController。

例如。

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

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

【讨论】:

  • 听起来是个好主意,但是当我将 scrollEnabled 设置为 NO 并且只有“Main ScrollView”滚动时,UITableView 的可重用单元会发生什么? “可重复使用的部件”还在工作吗?
  • 对了。看看OLEContainerScrollView,它应该可以满足您的需求。
【解决方案2】:

动态设置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

【讨论】:

    猜你喜欢
    • 2014-01-25
    • 1970-01-01
    • 2015-03-20
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    相关资源
    最近更新 更多