2012-11-05 97 views
0

是否可以直接設置UICollectionViewFlowLayout對象屬性,而不需要觸摸UICollectionViewDelegateFlowLayout協議?直接設置UICollectionViewFlowLayout對象屬性?

例如,如果我想每一個項目的大小是一樣的,我可以做到這一點:

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

,而不是這樣的:

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

如果積極的,我怎麼能引用UICollectionViewFlowLayout對象?

如果否定,你能否解釋爲什麼蘋果選擇將其作爲協議?它顯然需要更多的代碼。

回答

1

是的,這是可能的,但不是通過訪問現有的UICollectionViewFlowLayout實例。你需要繼承UICollectionViewFlowLayout並處理你想要在你的子類中的所有屬性。

今年有一些偉大的WWDC會議,我建議看看他們。你可以看到Session 205 here (login required)Session 219, here(login required)。第二個視頻將直接解決您的問題。

+0

這兩個環節不直接鏈接到每個會話。你能分別提供會話號碼嗎? – Philip007

+0

已添加。感謝您指出。 – Moshe

3

您可以使用UICollectionViewController中的默認流佈局。 例如,從您的viewDidLoad你可以叫

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

,然後用設置的屬性:

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