Если вы хотите автоматически изменить размер строки tableView, вы должны использовать autoLayout, чтобы поместить ваши элементы управления в ячейку вместо фрейма.Также лучше поместить код ограничений в конструктор ячейки:
public CaseDetailsTableCell(NSString cellId) : base(UITableViewCellStyle.Default, cellId)
{
_width = UIScreen.MainScreen.Bounds.Width / 3;
_qst1 = new UILabel();
_qst1.Font = _qst1.Font.WithSize(15);
_seperator = new UILabel();
_seperator.TextAlignment = UITextAlignment.Center;
_seperator.Text = ":";
_seperator.Font = _seperator.Font.WithSize(20);
_answer1 = new UILabel();
_answer1.Font = _answer1.Font.WithSize(15);
ContentView.AddSubviews(new UIView[] { _qst1, _seperator, _answer1 });
// Disable this to enable autoLayout
_qst1.TranslatesAutoresizingMaskIntoConstraints = false;
var qstLeading = NSLayoutConstraint.Create(_qst1, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, ContentView, NSLayoutAttribute.Leading, 1, 10);
var qstTop = NSLayoutConstraint.Create(_qst1, NSLayoutAttribute.Top, NSLayoutRelation.Equal, ContentView, NSLayoutAttribute.Top, 1, 10);
var qstWidth = NSLayoutConstraint.Create(_qst1, NSLayoutAttribute.Width, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 0, _width + 10);
var qstBottom = NSLayoutConstraint.Create(_qst1, NSLayoutAttribute.Bottom, NSLayoutRelation.LessThanOrEqual, ContentView, NSLayoutAttribute.Bottom, 1, -10);
_qst1.Lines = 0;
_qst1.SizeToFit();
_qst1.LineBreakMode = UILineBreakMode.Clip;
_qst1.TextAlignment = UITextAlignment.Left;
_qst1.BackgroundColor = UIColor.Blue;
_seperator.TranslatesAutoresizingMaskIntoConstraints = false;
var sepLeading = NSLayoutConstraint.Create(_seperator, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, _qst1, NSLayoutAttribute.Trailing, 1, 10);
var sepTop = NSLayoutConstraint.Create(_seperator, NSLayoutAttribute.Top, NSLayoutRelation.Equal, ContentView, NSLayoutAttribute.Top, 1, 10);
var sepWidth = NSLayoutConstraint.Create(_seperator, NSLayoutAttribute.Width, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 0, UIScreen.MainScreen.Bounds.Width / 3);
_seperator.BackgroundColor = UIColor.Yellow;
_answer1.TranslatesAutoresizingMaskIntoConstraints = false;
var ansLeading = NSLayoutConstraint.Create(_answer1, NSLayoutAttribute.Leading, NSLayoutRelation.Equal, _seperator, NSLayoutAttribute.Trailing, 1, 10);
var ansTop = NSLayoutConstraint.Create(_answer1, NSLayoutAttribute.Top, NSLayoutRelation.Equal, ContentView, NSLayoutAttribute.Top, 1, 10);
var ansTrailing = NSLayoutConstraint.Create(_answer1, NSLayoutAttribute.Trailing, NSLayoutRelation.Equal, ContentView, NSLayoutAttribute.Trailing, 1, -10);
var ansBottom = NSLayoutConstraint.Create(_answer1, NSLayoutAttribute.Bottom, NSLayoutRelation.LessThanOrEqual, ContentView, NSLayoutAttribute.Bottom, 1, -10);
_answer1.SizeToFit();
_answer1.TextAlignment = UITextAlignment.Justified;
_answer1.LineBreakMode = UILineBreakMode.WordWrap;
_answer1.BackgroundColor = UIColor.Red;
_answer1.Lines = 0;
ContentView.AddConstraints(new NSLayoutConstraint[] { qstTop, qstLeading, qstWidth, qstBottom, sepLeading, sepTop, sepWidth, ansLeading, ansTop, ansTrailing, ansBottom });
}
Здесь я добавляю LessThanOrEqual
NSLayoutRelation к нижнему ограничению меток _qst1 и _answer1, ячейка будет регулировать свою высоту в зависимости отсамый высокий.Вы можете настроить ограничения в соответствии с вашими требованиями.