是否可以直接设置UICollectionViewFlowLayout
对象属性而无需触及UICollectionViewDelegateFlowLayout
协议?
例如,如果我希望每个项目大小相同,我可以这样做:
self.collectionViewFlowLayout.itemSize = CGSizeMake(100,100)
而不是:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(100, 100);
}
如果是肯定的,我如何引用UICollectionViewFlowLayout
对象?
如果是否定的,你能否解释为什么Apple选择将其作为协议?它显然需要更多代码。
答案 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)。第二个视频将直接解决您的问题。