这个问题可能被标记为没有得到很好的问题,但更好的是你的。
我正在尝试找到一个如何在Xamarin.iOS中创建集合视图的解决方案,其中三个项目可见一个居中,两个两侧部分可见左右。这样的事情https://github.com/lukagabric/LGLinearFlow。我找到了许多快速而客观的c实现,但Xamarin.iOS没有。
我发现最接近的是在Subclassing UICollectionViewFlowLayout https://docs.microsoft.com/en-us/xamarin/ios/user-interface/controls/uicollectionview部分的文档中使用自定义UICollectionViewFlowLayout,但未定义如何使用它。
您是否知道某些实现或如何在Xamarin.iOS Native中实现它?
答案 0 :(得分:1)
发布时,此文档https://docs.microsoft.com/en-us/xamarin/ios/user-interface/controls/uicollectionview告诉我们如何实现flowLayout。我们只需要使用此流程布局初始化UICollectionView
。
构建新的集合视图:
LineLayout lineLayout = new LineLayout();
UICollectionView collectionView = new UICollectionView(View.Bounds, lineLayout);
View.AddSubview(collectionView);
collectionView.DataSource = new MyCollectionViewSource();
collectionView.BackgroundColor = UIColor.White;
collectionView.RegisterNibForCell(UINib.FromName("MyCollectionViewCell", null), "Cell");
然后它的dataSource可以是这样的:
public class MyCollectionViewSource : UICollectionViewDataSource
{
public override UICollectionViewCell GetCell(UICollectionView collectionView, NSIndexPath indexPath)
{
MyCollectionViewCell cell = collectionView.DequeueReusableCell("Cell", indexPath) as MyCollectionViewCell;
cell.MyStr = "label" + indexPath.Row;
return cell;
}
public override nint GetItemsCount(UICollectionView collectionView, nint section)
{
return 20;
}
}
请注意,LineLayout
中的常量可以根据您的要求进行调整。 SectionInset
表示每个部分之间的距离,我们应该调整它以确保CollectionView只有一行。
我为你引用了一个样本here。