使用Autolayout进行UITableCell自动调整不起作用

时间:2016-08-31 08:05:44

标签: ios swift uitableview xamarin.ios autolayout

我在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)

他们都没有工作。

XIB and application

2 个答案:

答案 0 :(得分:2)

要使UITableViewAutomaticDimension工作,您必须设置相对于单元格容器视图的所有左,右,底部和顶部约束。

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

最后

所以,为了使这个在单元格中的每个UIViews工作,我们需要根据单元格的contenview设置这样的约束

enter image description here

答案 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();
            };