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 セッションがいくつかあったので、それらを見ることをお勧めします。セッション 205 はこちら (ログインが必要)で、セッション 219 はこちら (ログインが必要)です。2 番目のビデオでは、あなたの質問に直接対応します。

于 2012-11-05T14:26:13.033 に答える