具有缩放效果和三个项目可见的集合视图流布局

Collection View flow layout with zoom effect and three items visible

这个问题可能被标记为问得不好,但你最好。

我正在尝试找到一种解决方案,以解决如何在 Xamarin.iOS 中创建一个集合视图,其中三个项目可见,一个居中,两个在两侧部分左右可见。像这样 https://github.com/lukagabric/LGLinearFlow。我发现了许多 swift 和 objective c 实现,但没有找到 Xamarin.iOS.

我发现最接近的是在子类化 UICollectionViewFlowLayout 部分下的文档中使用自定义 UICollectionViewFlowLayout https://docs.microsoft.com/en-us/xamarin/ios/user-interface/controls/uicollectionview,但未定义如何使用它。

你知道一些实现或如何在 Xamarin.iOS 原生中实现它吗?

正如您post,本文档https://docs.microsoft.com/en-us/xamarin/ios/user-interface/controls/uicollectionview 已经告诉我们如何实现流布局。我们只需要用这个流布局初始化一个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给大家参考