iOS自动调整UITableViewHeaderFooterView.ContentView子视图中的自定义单元格宽度

Posted

技术标签:

【中文标题】iOS自动调整UITableViewHeaderFooterView.ContentView子视图中的自定义单元格宽度【英文标题】:iOS Auto-resize custom cell width in UITableViewHeaderFooterView.ContentView Subview 【发布时间】:2016-12-12 11:22:21 【问题描述】:

我创建了一个自定义单元格PVIssueTypeSectionHeaderCell 并将其添加为标题视图中ContentView 的子视图,并使用以下代码:

public override UIView GetViewForHeader(UITableView tableView, nint section)

    var cell = (PVIssueTypeSectionHeaderCell)tableView.DequeueReusableCell(HeaderCellKey);
    if(cell == null)
    
        cell = PVIssueTypeSectionHeaderCell.Create();
    

    cell.ViewModel = this.GroupedIssueTypesFilter.ElementAt((int)section);

    var headerView = tableView.DequeueReusableHeaderFooterView(HeaderFooterViewKey);

    if (headerView == null)
    
        headerView = new UITableViewHeaderFooterView(HeaderFooterViewKey);
    

    headerView.ContentView.AddSubview(cell);

    return headerView;

但自定义单元格的宽度不会自动调整大小,如下图所示。

这是 iPad 横向模式和 iPhone 纵向模式:

虽然这个是 iPad 纵向模式:

如何让自定义单元格自动调整宽度?

【问题讨论】:

【参考方案1】:

我终于通过在GetViewForHeader 中直接返回我的自定义单元格的ContentView 使其工作。

public override UIView GetViewForHeader(UITableView tableView, nint section)

    var cell = (PVIssueTypeSectionHeaderCell)tableView.DequeueReusableCell(HeaderCellKey);
    if(cell == null)
    
        cell = PVIssueTypeSectionHeaderCell.Create();
    

    cell.ViewModel = this.GroupedIssueTypesFilter.ElementAt((int)section);

    return cell.ContentView;

【讨论】:

以上是关于iOS自动调整UITableViewHeaderFooterView.ContentView子视图中的自定义单元格宽度的主要内容,如果未能解决你的问题,请参考以下文章

在 IOS 8 中使用自动布局调整单元格大小

没有自动布局的 IOS11 的 Tableview 高度调整

UITextView自动调整大小以调整单行iOS Objective -C

iOS 有时会自动调整单元格标签的大小

如何通过 IOS 7 中的文本自动调整 UIButton 的大小?

iOS AutoLayout 自动调整整个表格(不是单元格!)高度