UICollectionView单元格大小

4

这个Stackoverflow问题https://dev59.com/jWvXa4cB1Zd3GeqPHDss#13555814回答了如何在UICollectionViewController中设置可变大小的单元格,我正在尝试使用包含在UIViewController中的UICollectionView对象来完成此操作。我需要的是GetSizeForItem,但不知道从哪里获取。

我的实现是通过Xcode向我的UIViewController添加一个UICollectionView。在我的代码中,我正在执行以下操作:

public partial class CustomViewController : UIViewController
{
    public override void ViewDidLoad()
    {
        collectionView.RegisterClassForCell(typeof(MyCell), cellId);
    }

    public override void ViewWillAppear(bool animated)
    {
        collectionView.Source = new CollectionViewSource(items, cellId);
    }

    class CollectionViewSource : UICollectionViewSource
    {
    }

    class MyCell : UICollectionViewCell
    {
    }
}
1个回答

1
根据http://docs.go-mono.comGetSizeForItem仅适用于UICollectionViewDelegateFlowLayout类。
要使用该方法,您应该实现UICollectionViewDelegateFlowLayout子类并将其分配给UICollectionViewControllerDelegate属性。示例

1
我并没有使用UICollectionViewController,而是在UIViewController中使用了UICollectionView。只有在使用UICollectionViewController时才能设置大小吗?谢谢。 - Vincent
您可以 (http://stackoverflow.com/questions/14291889/how-can-we-use-uicollectionview-without-an-uicollectionviewcontroller)。尝试在 UICollectionView 的构造函数中设置第二个参数,或稍后设置 UICollectionViewCollectionViewLayout 属性。 - Maxim Korobov
似乎无法调用委托子类。flowLayoutDelegate = new CollectionViewDelegateFlowLayout(); lineLayout = new CollectionViewFlowLayout(); collectionView.RegisterClassForCell(typeof(MyCell), CellId); collectionView.CollectionViewLayout = lineLayout; collectionView.Delegate = flowLayoutDelegate; - Vincent
我的代码是一个子类化的UICollectionViewDelegateFlowLayout。你上面展示的示例是基于UICollectionViewController的。而我的则是基于UICollectionView的。我已经下载并运行了你的示例。委托部分基本上就是我正在做的事情。我在你的示例中添加了一个视图,展示了我正在做的事情。我已经将它放在Dropbox上(https://www.dropbox.com/s/90isdyt9er438xa/CollectionViewSample.zip)。 - Vincent
我遇到了同样的问题。您是否能够在不使用UICollectionViewController的情况下解决它? - perfect_element
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接