使用UICollectionViewFlowLayout的Xamarin中的UICollectionView的“GetSizeForItem”不会被调用

时间:2015-05-15 08:49:12

标签: xamarin xamarin.ios uicollectionview uicollectionviewdelegate

我有一个UIViewController在viewDidLoad中添加了UICollectionView作为子视图。我使用UICollectionViewFlowLayout并创建了一个自定义MvxCollectionViewSource来管理单元格。

我在布局对象的构造函数中提供单元格信息,这不会使设备和方向更改变得灵活。

UICollectionViewLayout layout = new UICollectionViewFlowLayout () {ItemSize = new SizeF (354, 150),
            ScrollDirection = UICollectionViewScrollDirection.Vertical
        };

在ViewDidLoad方法中分配我的UICollectionView。

CollectionView = new UICollectionView (this.View.Bounds, layout);
        CollectionView.Delegate = new CustomViewDelegate();
        CollectionView.RegisterClassForCell (typeof(ProjectCollectionCell), ProjectCollectionCell.Key);
        CollectionView.Source = new ProjectCollectionSource (CollectionView, this,ProjectCollectionCell.Key);
        CollectionView.BackgroundColor = UIColor.Clear;
        //          CollectionView.RegisterClassForSupplementaryView (typeof(Header), UICollectionElementKindSection.Header, headerId);
        CollectionView.AllowsMultipleSelection = true;
        this.View.AddSubview (CollectionView);

现在,ProjectCollectionSource是我的自定义来源,并按照here创建了UICollectionViewDelegateFlowLayout

UICollectionViewDelegateFlowLayout如下所示,但永远不会被调用。

class CustomViewDelegate: UICollectionViewDelegateFlowLayout
    {

        public override CoreGraphics.CGSize GetSizeForItem (UICollectionView collectionView, UICollectionViewLayout layout, NSIndexPath indexPath)
        {
            return new CoreGraphics.CGSize (100, 100);
        }
    }

0 个答案:

没有答案