具有动态高度的自定义视图作为 UITableView 标题 ios xcode

Posted

技术标签:

【中文标题】具有动态高度的自定义视图作为 UITableView 标题 ios xcode【英文标题】:Custom View with dynamic Height as UITableView Header ios xcode 【发布时间】:2015-03-27 13:24:58 【问题描述】:

在我的项目中,我有一个 1.MovieplayerView,2.一个带有动态内容的标签,3.一个带有可变行数的 tableView。

我在 scrollView 中对所有这些视图执行此操作。但我总是遇到标签的动态高度问题。它有时会与 tableView 重叠。

我知道我们可以使用 customView 作为 tableView 标题。如何使用可变内容高度和自动布局来完成?我是 ios 新手。有什么建议吗??

我知道如何将视图作为表头添加到表中。但是当视图中的内容发生更改时,它会与 tableView 的内容重叠。

我经历过 How to resize superview to fit all subviews with autolayout?,How do I set the height of tableHeaderView (UITableView) with autolayout?

有人可以举一个简单的例子来说明如何做到这一点吗?或者告诉我使用滚动视图并将所有这些视图添加为其子视图是否更好?任何建议都会很有帮助。谢谢。

【问题讨论】:

你能检查我的答案吗 【参考方案1】:

在 viewDidAppear 中, 1.获取动态内容的高度,然后相应地设置你的tableHeaderView的高度。 2.再次设置headerView,让table view可以刷新: self.tableView.tableHeaderView = headerView

【讨论】:

【参考方案2】:

尝试使用以下代码,这是你想要实现的,你能帮我澄清一下吗

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 40)];

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 5, 200, 40)];
    NSString *string = [NSString stringWithFormat:@"/ %@",selectedCategory];
    label.font = [UIFont fontWithName:@"Helvetica" size:15.0];
    label.textColor = ThemeColor;
    [label setText:string];
    [view addSubview:label];

    [view setBackgroundColor:[UIColor colorWithRed:0.933f green:0.933f blue:0.933f alpha:1.00f]];
    return view;

别忘了把它放在UITableView的笔尖

【讨论】:

Tanq 为您的努力 nischal..但这个问题是 3 个月前提出的。我添加了所有这些东西(1.MovieplayerView,2.a label with dynamic content,3.a tableView with variable number of行。)作为uitableview标题的子视图。它运行良好。+1为答案。:) 不客气,伙计,我在堆栈溢出活动列表中看到了它,所以我回答了它。 如果您找到合适的答案,您也可以接受。我也给你+1了 仅此代码无法正常工作。我必须重新加载表格,获取表格视图高度,标签高度等并重置表格视图标题框架。自动布局约束也应该可以正常工作。我有一个tableview放在另一个tableview header里面。但是最好用这个方法而不是用scrollview来做。Scrollview+autolayout比较复杂。 如果您遇到自动布局问题,请随时发布问题广告通知我。我有兴趣解决自动布局问题【参考方案3】:

很难解释您关于使用滚动视图的问题。如果你想要一个自定义视图作为表视图标题,你可以在你的表视图类中重写这个方法:

- (UITableViewHeaderFooterView *)headerViewForSection:(NSInteger)section

【讨论】:

以上是关于具有动态高度的自定义视图作为 UITableView 标题 ios xcode的主要内容,如果未能解决你的问题,请参考以下文章

在具有动态高度的 IB uitableviewcell 中使用带有 XIB 的自定义视图

具有多行 UILabel 的自定义 Tableview 单元格需要动态高度

iOS 8中具有动态高度的自定义inputView

具有自动布局的自定义单元格的动态高度

具有 3 个自定义视图和动态高度的 UITableView

具有静态单元的 UItableView 包含 2 个 UItableview,每个都有具有动态高度的自定义单元