public override float GetHeightForRow(UITableView tableView, NSIndexPath indexPath) { if (this.offscreenCell == null) { this.offscreenCell = new ItemCell(); } var cell = this.offscreenCell; cell.UpdateFonts(); var item = this.model.Items[indexPath.Row]; cell.Title = item.Title; cell.Body = item.Body; cell.SetNeedsUpdateConstraints(); cell.UpdateConstraintsIfNeeded(); cell.Bounds = new RectangleF(0, 0, this.TableView.Bounds.Width, this.TableView.Bounds.Height); cell.SetNeedsLayout(); cell.LayoutIfNeeded(); var height = cell.ContentView.SystemLayoutSizeFittingSize(UIView.UILayoutFittingCompressedSize).Height; height += 1; return height; }