1

私はUICollectionViewプログラムでセットアップしており、すべてが正しいように見えますが、アプリをテストすると、垂直方向と水平方向の両方で非常に奇妙なスペースが得られます。LibraryViewControllerコレクション ビューを設定する私のクラスは、ここにあります: LibaryViewController class . 私のLibraryCell初期化は次のようになります。

- (id)initWithFrame:(CGRect)frame
{
NSLog(@"Init called");
NSLog(@"%@", NSStringFromCGRect(frame));
self = [super initWithFrame:frame];
if (self) {
    // Initialization code
    imageView = [[UIImageView alloc] initWithFrame:frame];
    [self.contentView addSubview:imageView];
}
return self;
}

そのため、セルが設定されるたびに、フレームが何であるかを報告してもらいます。面白いことに、これらの値は正しいように見えます。フレームが適切な場所にあることを示す、ログ ファイルの一部は次のようになります。

2012-12-12 11:08:48.333 ARApp2[16330:907] Init called
2012-12-12 11:08:48.335 ARApp2[16330:907] {{10, 10}, {80, 120}}
2012-12-12 11:08:48.341 ARApp2[16330:907] Loaded image0.png
2012-12-12 11:08:48.349 ARApp2[16330:907] success
2012-12-12 11:08:48.352 ARApp2[16330:907] Init called
2012-12-12 11:08:48.354 ARApp2[16330:907] {{120, 10}, {80, 120}}
2012-12-12 11:08:48.358 ARApp2[16330:907] Loaded image1.png
2012-12-12 11:08:48.365 ARApp2[16330:907] success
2012-12-12 11:08:48.368 ARApp2[16330:907] Init called
2012-12-12 11:08:48.370 ARApp2[16330:907] {{230, 10}, {80, 120}}
2012-12-12 11:08:48.375 ARApp2[16330:907] Loaded image2.png
2012-12-12 11:08:48.382 ARApp2[16330:907] success

しかし、結果を画面で見ると、次のようになります。スクリーンショット このコレクションには 4 つの項目があります。最初の 3 つは最初の行にあるため、3 番目の行も見えません。次に、4 番目のものは次の行を開始しますが、私が望むよりもはるかに低くなります。なぜこれらの細胞がこれほどまでに離れているのかわかる人はいますか?

4

1 に答える 1

3

imageView = [[UIImageView alloc] initWithFrame:frame];

この行はあなたの問題のようです。画像ビューは {(0,0), (80,120)} であるはずですが、そのスーパービューのフレームを画像のフレームとして割り当てているため、スーパービューが {(120, 10), (80, 120)} しかし、画像も同じオフセットとサイズを持っているため、クレイジーな間隔ができています。

tl;dr、imageViewがスーパービュー全体を占める必要があるため、imageViewフレームをself.boundsに設定します。

于 2012-12-12T16:52:19.960 に答える