[Objective-C] UICollectionViewのCell少ない時の中央寄せ

insetForSectionAtIndexを実装。

// これは横スクロールだけを考えたCollectionViewで使用

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{
    NSInteger count = item数;
    CGFloat totalCellWidth = Cell幅 * count;
    CGFloat totalSpaceWidth = Cell間のスペース * (count - 1);

    CGFloat inset = (collectionView.layer.frame.size.width - (totalCellWidth + totalSpaceWidth)) / 2;
    if (inset > 0) {
        return UIEdgeInsetsMake(0, inset, 0, inset);
    }else{
        return UIEdgeInsetsMake(0, 0, 0, 0);
    }
}

左右のinsetがマイナスになると、画面幅を超えたサイズが生成されて、横スクロールしなくなるので、マイナスの時は画面幅としてあげるためのinsetゼロです。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォロミー

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください