CollectionView 单元格高度不会自动调整大小
Posted
技术标签:
【中文标题】CollectionView 单元格高度不会自动调整大小【英文标题】:CollectionView cell height is not automatically resizing 【发布时间】:2019-01-16 00:44:46 【问题描述】:所以我在 Xamarin ios 项目中遇到了 UICollectionView 的一些问题。
CollectionView 的单元格没有随着其中的标签展开。单元格中的标签将 lines 设置为 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;
我试图让单元格成为集合视图的宽度并且高度灵活;但是,每当我填充单元格时,我总是会得到这样的结果: 单元格被截断并在末端有一个椭圆。我在网上读到约束必须正确才能动态调整大小,所以我缺少什么吗?
我还读到,要为每个单元格计算高度,我可以加载单元格的笔尖,填充它,然后在自定义 UICollectionViewDelegate 中手动设置大小。很酷的想法,但我可以找到任何适用于 Xamarin iOS 的工作示例。
如果我遗漏了什么或您需要任何其他信息,请告诉我。提前致谢!
【问题讨论】:
移除高度限制并将底部限制更改为 >= 10 将底部约束设置为小于或等于 10 做到了!!!!!!!!!猜猜我的约束已经关闭了 【参考方案1】:1.通过
让你的标签支持多行textLabel.LineBreakMode = UILineBreakMode.WordWrap;
textLabel.Lines = 0;
2.设置单元格估计高度
cell.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize
注意事项:
要定义单元格的高度,您需要一个完整的链 填充区域的约束和视图(具有定义的高度) 在内容视图的上边缘和下边缘之间。
如果您的视图具有固有的内容高度,系统将使用这些 价值观。如果没有,则必须添加适当的高度约束, 无论是视图还是内容视图本身。
【讨论】:
现在单元格是小方块。仍然没有扩展以适应标签。如果我关闭剪辑到单元格的边界,我可以看到整个标签。不知道有没有帮助?另外,CollectionViewSource 中没有cell.EstimatedItemSize
你能把它的截图发给我吗?
更新帖子。我输入的文字比框中的要长很多。以上是关于CollectionView 单元格高度不会自动调整大小的主要内容,如果未能解决你的问题,请参考以下文章
如何使用自动布局动态调整具有固定宽度的collectionview单元格高度?
计算 NSString 高度以在 collectionView 单元格中使用
TableView 单元格高度不根据第一次重新加载时的 collectionview 高度
如何在水平collectionview中设置不同的单元格高度和宽度