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

时间:2019-01-16 00:44:47

标签: c# ios xamarin uicollectionview mvvmcross

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

CollectionView的单元格没有随标签一起扩展。单元格中的标签的设置为0,并具有以下约束:

  • (顶部,底部,前导,结尾)以超级视图

  • 高度> = 10

在我的 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;
    }
}

我正在尝试使单元格成为集合视图的宽度,并使高度灵活。但是,每当我填充单元格时,总会得到类似以下内容:UICollectionView Cells that are cutoff enter image description here 细胞被切除,末端有一个椭圆。我已经在线阅读了约束条件,可以动态调整大小,所以我缺少什么吗?

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

请让我知道我是否缺少某些物品或您需要的其他任何信息。预先感谢!

1 个答案:

答案 0 :(得分:2)

1。使标签支持多行

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

2。设置像元估计高度

cell.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize

注意事项:

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

  • 如果视图具有固有的内容高度,则系统将使用这些高度 价值观。如果没有,则必须添加适当的高度限制, 要么是视图,要么是内容视图本身。