如何调整一个UITableView的tableHeaderView

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何调整一个UITableView的tableHeaderView相关的知识,希望对你有一定的参考价值。

参考技术A 1)创建一个UITableView和UIView的(100×320像素);
2)设定的UIView作为的UITableView的tableHeaderView;
3)建立和围棋.a切正常。 现在,我想调整大小的tableHeaderView,所以我在viewDidLoad中添加以下代码: self.tableView.autoresizesSubviews = YES;
self.tableView.tableHeaderView = myHeaderView;
self.tableView.tableFooterView = myFooterView;
CGRect newFrame = self.tableView.tableHeaderView.frame;
newFrame.size.height = newFrame.size.height + 100;
self.tableView.tableHeaderView.frame = newFrame;
参考技术B 供参考:我已经得到这个通过修改tableHeaderView并重新设置它的工作。在这种情况下,我在UIWebView的子视图已经完成加载tableHeaderView的大小。
[webView sizeToFit];
CGRect newFrame = headerView.frame;
newFrame.size.height = newFrame.size.height + webView.frame.size.height;
headerView.frame = newFrame;
[self.tableView setTableHeaderView:headerView];

如何使用 Autolayout 调整 UITableView 的大小?

【中文标题】如何使用 Autolayout 调整 UITableView 的大小?【英文标题】:How do I resize my UITableView using Autolayout? 【发布时间】:2021-03-29 17:09:45 【问题描述】:

我在 Storyboard 的 ViewController 中有一个 UITableView(不是 UITableViewController)。我想要做的是在代码中的 TableView 上方添加一个自定义 UIView。当 View 不存在时,TableView 的顶部锚点锚定到 PrimaryNavCollectionViewOutlet。我将这个约束存储为一个出口,然后如果我必须添加视图,我可以使用这个出口来移除情节提要约束。

然后我将插入的 View 限制在 TableView 所在的位置下方,并将 TableView 限制在该位置下方。

这是我的代码:

if (_viewAboveTableView != null)

     TableView.RemoveConstraint(TableViewTopConstraint);
                
     View.AddSubview(_viewAboveTableView);
     _viewAboveTableView.TranslatesAutoresizingMaskIntoConstraints = false;
     TableView.TranslatesAutoresizingMaskIntoConstraints = false;
     _viewAboveTableView.LeadingAnchor.ConstraintEqualTo(View.LeadingAnchor).Active = true;
     _viewAboveTableView.TopAnchor.ConstraintEqualTo(PrimaryNavCollectionViewOutlet.BottomAnchor).Active = true;
     _viewAboveTableView.TrailingAnchor.ConstraintEqualTo(View.TrailingAnchor).Active = true;
     _viewAboveTableView.BottomAnchor.ConstraintEqualTo(TableView.TopAnchor).Active = true;

不幸的是,当我运行它时,我看不到 _viewAboveTableView。我觉得我错过了一些简单的东西,但我不知道是什么。我在视图上尝试了 LayoutIfNeeded() 和其他一些方法,但它们没有让它出现。我错过了什么?

【问题讨论】:

您可以发布add a custom UIView above the TableView in code的完整代码。似乎有一些约束冲突。 这几乎是我发布的所有内容。您看到的冲突是什么? 您在哪里添加了自定义视图?贴出相关代码。 第 5 行 View.AddSubview(_viewAboveTableView); 【参考方案1】:
    为 _viewAboveTableView 添加高度约束。 或者 确保 _viewAboveTableView 包含将指定内在内容大小的内容 - 它应该具有具有内容大小的正确布局的子视图(通过布局的内在或显式。例如图像、标签等)

我的猜测是 _viewAboveTableView 没有膨胀,因为它没有指定内在内容大小(高度 > 0)。如果是错误的约束,你应该可以在控制台中看到它。

【讨论】:

【参考方案2】:

看来我正在做的问题是TableView.RemoveConstraint(TableViewTopConstraint); 没有达到预期的效果。

从answer 我了解到,RemoveConstraint 已经或即将被弃用,取而代之的是TableViewTopConstraint.Active = false;。这使我的代码按照预期的方式工作。

【讨论】:

以上是关于如何调整一个UITableView的tableHeaderView的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 UITableView 滚动动态调整 UITableViewCell 的大小?

如何在 UITabBarViewController 内的 UINavigationController 内调整 UITableView 的大小?

自行调整特定 UITableView 单元的大小

如何在 UITableView 控制器中调整表格视图的大小?

如何调整 UITableView tableHeaderView 的左右插入或边距?

如何强制 uitableview 调整单元格的大小(在停用高度约束后)?