CollectionView 单元格高度不会自动调整大小

CollectionView cell height is not automatically resizing

所以我在我的 Xamarin iOS 项目中遇到了 UICollectionView 的一些问题。

CollectionView 的单元格未随着其中的标签展开。单元格中的标签将 设置为 0 并具有以下约束:

在我的 ViewDidLoad() 中,我按如下方式设置 CollectionView:

var source = new CustomCollectionViewSource(collectionView);
        collectionView.Source = source;
        collectionView.SetCollectionViewLayout(new UICollectionViewFlowLayout()
        {
            ScrollDirection = UICollectionViewScrollDirection.Vertical,
            EstimatedItemSize = new CGSize(collectionView.Frame.Width, 10)
        }, false);

        var set = this.CreateBindingSet<MainViewController, MainViewModel>();
        set.Bind(source).For(v => v.ItemsSource).To(vm => vm.DataSource);
        set.Apply();

和我的 CollectionViewSource

 public class CustomCollectionViewSource : MvxCollectionViewSource
{
    public IList<Item> Messages { get; set; }

    public override void ReloadData()
    {
        var list = (ItemsSource as IEnumerable<Item>).ToArray();
        Messages = list;
    }

    public CustomCollectionViewSource(UICollectionView collectionView) : base(collectionView)
    {
        collectionView.RegisterNibForCell(CustomCollectionViewCell.Nib, CustomCollectionViewCell.Key);
    }

    public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
    {
        var cell = collectionView.DequeueReusableCell(CustomCollectionViewCell.Key, indexPath) as CustomCollectionViewCell;
        cell.DataContext = Messages.ElementAtOrDefault(indexPath.Row);

        return cell;
    }
}

我正在尝试让单元格成为集合视图的宽度,并使高度灵活;然而,每当我填充单元格时,我总是得到这样的结果: 单元格被截断并在末尾有一个椭圆。我在网上读到约束必须正确才能动态调整大小,所以我缺少什么吗?

我还读到要为每个单元格计算高度,我可以加载单元格的笔尖,填充它,然后在自定义 UICollectionViewDelegate 中手动设置大小。好主意,但我可以找到 Xamarin iOS 的任何工作示例。

如果我遗漏了什么或您需要任何其他信息,请告诉我。提前致谢!

1.Make 您的标签支持多行

textLabel.LineBreakMode = UILineBreakMode.WordWrap;
textLabel.Lines = 0;  

2.Set单元格估计高度

cell.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize

注意事项:

  • 要定义单元格的高度,您需要一个不间断的链
    填充区域的约束和视图(具有定义的高度)
    在内容视图的上边缘和下边缘之间。

  • 如果您的视图具有固有的内容高度,系统将使用那些 值。如果不是,则必须添加适当的高度限制, 到视图或内容视图本身。