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

iOS在UITableViewHeaderFooterView.ContentView子视图中自动调整自定义单元格宽度,ios,iphone,ipad,xamarin.ios,uitableviewsectionheader,Ios,Iphone,Ipad,Xamarin.ios,Uitableviewsectionheader,我创建了一个自定义单元格PVIssueTypeSectionHeaderCell,并将其添加为标题视图中ContentView的子视图,其中包含以下代码: public override UIView GetViewForHeader(UITableView tableView, nint section) { var cell = (PVIssueTypeSectionHeaderCell)tableView.DequeueReusableCell(HeaderCellKey);

我创建了一个自定义单元格
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肖像模式时:


如何使自定义单元格自动调整其宽度

通过直接在
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;
}

通过直接在
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;
}