这个问题可能被标记为问得不好,但更好。
我正在尝试找到有关如何在 Xamarin.iOS 中创建集合视图的解决方案,其中三个项目可见,一个居中,两个在两侧部分可见左右。像这样的东西 https://github.com/lukagabric/LGLinearFlow。我发现许多快速而客观的c实现,但Xamarin.iOS没有任何实现。
我发现的最接近的是使用自定义UICollectionViewFlowLayout在Subclassing UICollectionViewFlowLayout部分下的文档中 https://learn.microsoft.com/en-us/xamarin/ios/user-interface/controls/uicollectionview 但没有定义如何使用它。
您是否知道一些实现或如何在 Xamarin.iOS Native 中实现它?
正如你所发帖的,这个文档 https://learn.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");
那么它的数据源可以是这样的:
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 只有一行。
我在这里做了一个示例供您参考。