2012-12-12 109 views
1

我正在以編程方式設置我的UICollectionView,一切看起來都很合適,但是當我測試我的應用程序時,我得到了一些非常奇怪的空間,無論是垂直還是水平。我的LibraryViewController班,設置收集視圖可以在這裏找到:LibaryViewController class。我LibraryCell初始化看起來是這樣的:UICollectionView佈局間距問題。單元格之間的空間太大

- (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 

但是,當你看到屏幕上的結果,它看起來像這樣:Screenshot 這個系列共有四個項目在裏面。前三名在第一排,所以你甚至看不到第三名。然後第四個開始下一行,但比我想要的低。任何人都可以看到爲什麼這些細胞間隔很遠?

+0

什麼是「自我」在這裏?你打給哪個對象的initWithFrame?你知道一個視圖的子視圖有自己的以(0,0)開頭的座標系嗎?如果這個對象(我猜想有些UIView子類)有一個10,10和(東西,東西)的框架,並且你添加了一個子視圖(10,10)和(東西,東西),那麼你的子視圖將從(20, 20)。你的第二個子視圖將在你的「自我」的超視圖的座標系內的(240,20)開始。 –

回答

3

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

此行似乎是你的問題。您的圖像視圖應該是{(0,0),(80,120)},但是您將其超級視圖的幀分配爲圖像的幀,因此您可以看到第二個圖像的超視圖爲{(120,10), (80,120)}但圖像也有相同的偏移量和大小,這給你瘋狂的間距。

tl; dr,將您的imageView框架設置爲self.bounds,因爲您的imageView應占據整個超級視圖。

+1

或使用self.bounds,這是添加填充整個空間的子視圖的正確方法。 – jrturton

+0

你是對的,self.bounds是正確的方法,因爲整個幀被用於每個圖像。 – Stakenborg

+0

謝謝!這確實是問題所在。 – user1040854