9

コレクションビューセルにゼロパディングを設定しようとしています。ビューコントローラーで「最小間隔」を次のように設定しました:

ここに画像の説明を入力

それでも、セル間にギャップがあります。

ここに画像の説明を入力

また、フレームの幅に応じてセルがうまく折り返されるようにしたいです。たとえば、各セルの幅は 50 ピクセルなので、6 つのセルがあり、フレームの幅を 150 ピクセルに設定すると、3 行 2 行が表示されます。細胞。

それでも、フレーム幅を 150 に設定すると、次のようになります。

- (void)viewDidLoad
{
    [super viewDidLoad];

    CGRect frame = self.collectionView.frame;
    frame.size.width = 150;
    self.collectionView.frame = frame;
}

上のスクリーンショットのように見えます (広すぎます)。

10 などの途方もなく小さい値に設定すると、ある程度ラップされます。

ここに画像の説明を入力

UICollectionViewCell は 50 x 50 に設定されています。

ここに画像の説明を入力

また、セルのサイズをプログラムで設定しようとしましたが、UIEdgeInset も削除しました。

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
    return UIEdgeInsetsMake(0, 0, 0, 0);
}

干渉があった場合に備えて、自動レイアウトを無効にしました。フレームの幅/高さに応じて、パディングを削除してラップする方法について何かアドバイスはありますか?

4

4 に答える 4

3

スクリーンショットのセルが50x50かどうかはわかりません(編集:そうだと思います...)。

UICollectionViewDelegate と UICollectionViewDataSource を接続したかどうかを確認します。

これは、実装する必要があるメソッドです

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

うまくいかない場合は、このコードを viewDidLoad の中に入れてみてください

UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
[flowLayout setMinimumInteritemSpacing:0.0f];
[flowLayout setMinimumLineSpacing:0.0f];
[flowLayout setItemSize:CGSizeMake(50.0f, 50.0f)];
[self.collectionView setCollectionViewLayout:flowLayout];
于 2013-01-03T21:26:04.563 に答える
3

viewUITableViewController のように、ビュー コントローラーの基本プロパティとしてコレクション ビュー (またはテーブル ビュー) を持つ UICollectionViewController を使用しています。これは、View Controller 内からサイズを変更できないことを意味します。そのサイズは、そのスーパービューによって制御されます。この場合は、ウィンドウをルート ビュー コントローラーとして持つか、親ビュー コントローラーを埋め込む場合は親ビュー コントローラーのいずれかです。

セルが互いに隣接するようにコレクション ビュー領域を縮小する場合は、ストーリーボードでコレクション ビューのセクション インセットを修正できます。あなたの場合、左右に 15 のインセットがセルをまとめます。これは、9 * 50 (450) に 30 = 480 を加えたもので、横向きの 3.5 インチ iPhone の幅です。

明らかに、これは iPhone 5 または iPad では異なります。実行時にインセットを計算するか、標準の UIViewController サブクラスに保持されているコレクション ビューを使用するか、UICollectionViewController を埋め込みビュー コントローラーとして保持することができます。後者の 2 つを使用すると、サイズを指定するだけで済みます。これは、インセットを計算するよりもおそらく優れています。

于 2013-01-03T22:32:13.607 に答える