0

是否可以直接设置UICollectionViewFlowLayout对象属性而不接触UICollectionViewDelegateFlowLayout协议?

例如,如果我希望每个项目的大小都相同,我可以这样做:

self.collectionViewFlowLayout.itemSize = CGSizeMake(100,100)

而不是这个:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    return CGSizeMake(100, 100);
}

如果是肯定的,我该如何引用该UICollectionViewFlowLayout对象?

如果是否定的,你能解释为什么 Apple 选择将其作为协议吗?它显然需要更多代码。

4

2 回答 2

3

您可以使用 UICollectionViewController 中的默认流布局。例如,从您的 viewDidLoad 您可以调用

UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *)[[self collectionView] collectionViewLayout];

然后设置属性:

[flowLayout setItemSize:CGSizeMake(100.0,100.0)];
于 2013-01-22T12:37:03.797 回答
1

是的,这是可能的,但不能通过访问现有的 UICollectionViewFlowLayout 实例。您需要继承 UICollectionViewFlowLayout 并处理您想要在子类中使用的所有属性。

今年有一些很棒的 WWDC 会议,我建议观看它们。您可以在此处查看Session 205(需要登录)Session 219,此处(需要登录)。第二个视频将直接解决您的问题。

于 2012-11-05T14:26:13.033 回答