我正在为来自 UITableViewSource 的 UITableView 编写一个自定义单元格。我已经实现了 GetHeightForRow 并记录了结果以确保高度正确通过。问题是,我的自定义单元格的框架高度是固定的 44,无论从 GetHeightForRow 返回什么值。副作用当然是我的图层边界不正常,并且 UITableView 切断了我最后一个单元格的底部,并且不允许进一步滚动。
值得一提的是,我已经尝试在我的单元构造函数逻辑和 GetCell 逻辑中手动更改单元的框架,但对大多数人来说很明显,这并不重要,使用的值总是恢复为 44。
这是我的 UITableViewSource 逻辑如何进行的一个想法:
public override float GetHeightForRow (UITableView tableView, NSIndexPath indexPath)
{
var result = SingleItemCell.GetHeight(_models[indexPath.Row], _width, _isStandalone));
Console.WriteLine(result); //prints various heights, never 44
return result;
}
public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath)
{
var cell = tableView.DequeueReusableCell(Id) as SingleItemCell ??
(_isStandalone ? new StandaloneItemCell() : new SingleItemCell());
var model = _models[indexPath.Row];
cell.Model = model;
Console.WriteLine(cell.Frame.Height); //always 44
return cell;
}
更新
有趣的是,单元格分隔符显示在正确的位置,但我的自定义视图仍然无法看到正确的帧高度。
即使更改了我的自定义单元格视图的构造函数以将显式框架传递给基本构造函数,我的框架的高度也不会改变。
public SingleOffer(RectangleF frame)
: base(frame) //example new RectangleF(0, 0, 300, 65)
{
//Here, before custom logic, Frame is still 0, 0, 300, 44!
Initialize();
}