调整包含UICollectionView的UITableViewCell的大小

时间:2016-08-31 13:33:51

标签: ios uitableview xamarin.ios uicollectionview uikit

我有一些包含UICollecionView的单元格。对于行高,我使用UITableViewAutomaticDimensionAutolayout。是否可以自动调整单元格大小以立即显示集合视图的整个内容而无需滚动?

例如此单元格中有4个标签:

cell

编辑:自动调整功能正常,但对齐方式不正确。我试图用纯Autolayout来做所有事情,而没有继承UICollectionViewFlowLayout。最后一行总是正确的。我不知道为什么......

col

这是我的代码,不幸的是在Xamarin:

void ConfigureCollectionCell(ProfileEditCollectionCell cell, String property, IList list, nint tag)
{
    cell.propertyName = property;
    cell.collectionView.Tag = tag;
    cell.collectionView.BackgroundColor = UIColor.White;
    cell.collectionView.DataSource = this;
    cell.collectionView.RegisterNibForCell(UINib.FromName("ProfileEntityCell", NSBundle.MainBundle), "profileEntityCell");
    (cell.collectionView.CollectionViewLayout as UICollectionViewFlowLayout).EstimatedItemSize = new CoreGraphics.CGSize(150, 20);
    var collectionHeight = NSLayoutConstraint.Create(cell.collectionView , NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1,     cell.collectionView.CollectionViewLayout.CollectionViewContentSize.Height);
    cell.collectionView.AddConstraint(collectionHeight);
}

public UICollectionViewCell GetCell(UICollectionView collectionView, Foundation.NSIndexPath indexPath)
{
    var cell = collectionView.DequeueReusableCell("profileEntityCell", indexPath) as ProfileEntityCell;
    cell.BackgroundColor = UIColor.Red;
    ConfigureCollectionEntity(cell, indexPath, collectionView.Tag); //not important

    collectionView.SetNeedsUpdateConstraints();
    collectionView.UpdateConstraints();

    return cell as UICollectionViewCell;
}

1 个答案:

答案 0 :(得分:0)

你首先需要的是采用IBOutlet的集合视图高度自动布局,然后设置集合视图高度常量=集合视图内容size.height,并停止集合视图滚动将解决您的问题