我在Xamarin iOS编程。基本上表格单元格不会调整大小,而是始终保持静态大小(即使在键入文本和新行之后)。
我有一个xib,它包含一个UITextView和4个约束,根据需要加上高度约束(删除高度约束会使它显示为零大小)
在ViewDidLoad()方法中,我使用以下内容:
TableView.EstimatedRowHeight = 50;
TableView.RowHeight = UITableView.AutomaticDimension;
在ViewWillAppear()中,我也使用相同的行。
我也试过用这个
public override nfloat EstimatedHeight(UITableView tableView, NSIndexPath indexPath)
{
return 80;//autodimension also didn't work here.
}
最后GetHeightForRow (UITableView tableView, NSIndexPath indexPath)
他们都没有工作。
答案 0 :(得分:2)
要使UITableViewAutomaticDimension工作,您必须设置相对于单元格容器视图的所有左,右,底部和顶部约束。
最后
所以,为了使这个在单元格中的每个UIViews工作,我们需要根据单元格的contenview设置这样的约束
答案 1 :(得分:0)
Objective-C中的示例代码演示了这个想法。
C#中重写的代码
editTextView.Changed += (s, e) => {
// Sizing:
var size = editTextView.SizeThatFits(new CoreGraphics.CGSize(Frame.Width, nfloat.MaxValue));
var height = size.Height;
if (height < 50)
{
this.EditTextHeight.Constant = 50;
//self.heightConstraint.constant = 50;
}
else {
this.EditTextHeight.Constant = height;
//self.heightConstraint.constant = height;
}
// call the tableview-updates in the controller
NotifyOnTextChanged.Invoke();
};