1

我正在以编程方式设置我的UICollectionView一切,一切看起来都对我来说是正确的,但是当我测试我的应用程序时,我得到了一些非常奇怪的间距,无论是垂直还是水平。LibraryViewController可以在此处找到设置集合视图的我的类: LibaryViewController 类。我的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

但是当您查看屏幕上的结果时,它看起来像这样:Screenshot 这个集合中有四个项目。前三个在第一排,所以你甚至看不到第三个。然后第四个开始下一行,但比我想要的要低得多。谁能明白为什么这些细胞间隔如此之远?

4

1 回答 1

3

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

这条线似乎是你的问题。您的图像视图应该是 {(0,0), (80,120)} 但您将其超级视图的框架分配为图像的框架,因此您最终得到的第二张图像的超级视图为 {(120, 10), (80, 120)} 但图像也具有相同的偏移量和大小,这给了你疯狂的间距。

tl;博士,将您的 imageView 框架设置为 self.bounds,因为您的 imageView 应该占据整个超级视图。

于 2012-12-12T16:52:19.960 回答