所以我在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;
}
}
我正在尝试使单元格成为集合视图的宽度,并使高度灵活。但是,每当我填充单元格时,总会得到类似以下内容: 细胞被切除,末端有一个椭圆。我已经在线阅读了约束条件,可以动态调整大小,所以我缺少什么吗?
我还读到要获得每个单元格的计算高度,我可以加载单元格的笔尖,填充它,然后在自定义UICollectionViewDelegate中手动设置大小。不错的主意,但我可以找到Xamarin iOS的任何可行示例。
请让我知道我是否缺少某些物品或您需要的其他任何信息。预先感谢!
答案 0 :(得分:2)
1。使标签支持多行
textLabel.LineBreakMode = UILineBreakMode.WordWrap;
textLabel.Lines = 0;
2。设置像元估计高度
cell.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize
注意事项:
要定义单元格的高度,您需要不间断的链
约束和视图(具有定义的高度)以填充区域
在内容视图的顶部边缘和底部边缘之间。
如果视图具有固有的内容高度,则系统将使用这些高度 价值观。如果没有,则必须添加适当的高度限制, 要么是视图,要么是内容视图本身。