1

iOS Dev Weeklyの最新号には、UICollectionWaterfallLayoutに関する興味深い記事がありました。https://github.com/chiahsien/UICollectionViewWaterfallLayoutご覧の とおり、サンプルアプリを動作させるには2つの手順を実行する必要があります。しかし、私はObjective-CとiOSの開発の初心者なので、これらの手順で立ち往生しています。

特に:

ステップ1:これらの3つのプロパティと1つのデリゲートを設定するとはどういう意味ですか?プロパティとデリゲートが何であるかは知っていますが、同様に何をすべきかわかりません。

ステップ2:デリゲートにそのメソッドを実装するにはどうすればよいですか?

明らかな質問でごめんなさい。私はBigNerdRanchの本を勉強していますが、まだこのプラットフォームで問題を抱えています。

よろしくお願いします。

4

1 に答える 1

1

これは単なる「レイアウト」です。つまり、viewController と collectionView を自分で提供し、これら 3 つをまとめる必要があります。

次に例を示します。 WaterfallViewController.h で

#import "UICollectionViewWaterfallLayout.h"
@interface WaterfallViewController : UIViewController <UICollectionViewDataSource, UICollectionViewDelegate, UICollecitonViewDelegateWaterfallLayout>
@property (nonatomic, strong) UICollectionView *collectionView;
@end

そしてあなたの WaterfallViewController.m で

- (void)viewDidLoad
{
    [super viewDidLoad];

    UICollectionViewWaterfallLayout *layout = [[UICollectionViewWaterfallLayout alloc] init];
    layout.delegate = self;
    layout.columnCount = 2;
    layout.itemWidth = 146;
    layout.sectionInset = UIEdgeInsetsMake(9, 9, 9, 9);

    _collectionView = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:layout];
    _collectionView.dataSource = self;
    _collectionView.delegate = self;
    _collectionView.showsVerticalScrollIndicator = NO;
    _collectionView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    [_collectionView registerClass:[MyCell class] forCellWithReuseIdentifier:@"MyCell"];

    [self.view addSubview:self.collectionView];
}

#pragma mark - UICollecitonViewDelegateWaterfallLayout Delegate
- (CGFloat)collectionView:(UICollectionView *)collectionView
                   layout:(UICollectionViewWaterfallLayout *)collectionViewLayout
 heightForItemAtIndexPath:(NSIndexPath *)indexPath
{
    // return the height for cell at indexPath.
}

ご不便をおかけして申し訳ありませんが、すぐにいくつかのサンプル コードをレポに追加します。

于 2012-11-26T03:04:33.373 に答える