直接设置UICollectionViewFlowLayout对象属性?

时间:2012-11-05 14:02:57

标签: objective-c ios

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

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

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

而不是:

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

然后使用以下命令设置属性:

[flowLayout setItemSize:CGSizeMake(100.0,100.0)];

答案 1 :(得分:1)

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

今年有一些伟大的WWDC会议,我建议观看它们。您可以看到Session 205 here (login required)Session 219, here(login required)。第二个视频将直接解决您的问题。