iOS Auto-resize UITableViewHeaderFooterView.ContentView 子视图中的自定义单元格宽度
iOS Auto-resize custom cell width in UITableViewHeaderFooterView.ContentView Subview
我创建了一个自定义单元格 PVIssueTypeSectionHeaderCell
并使用以下代码将其添加为 ContentView
视图中 header 的子视图:
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;
}
但是自定义单元格的宽度并不像您在下面这些图片中看到的那样auto-resize。
这是 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;
}
我创建了一个自定义单元格 PVIssueTypeSectionHeaderCell
并使用以下代码将其添加为 ContentView
视图中 header 的子视图:
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;
}
但是自定义单元格的宽度并不像您在下面这些图片中看到的那样auto-resize。
这是 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;
}