集合查看具有缩放效果和三个可见项目的流程布局

时间:2018-05-22 20:55:20

标签: ios xamarin uicollectionview slider flowlayout

这个问题可能被标记为没有得到很好的问题,但更好的是你的。

我正在尝试找到一个如何在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中实现它?

1 个答案:

答案 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