我以编程方式设置我的UICollectionView
并且一切看起来都对我不错,但是当我测试我的应用时,我会得到一些非常奇怪的间距,包括垂直和水平。我可以在此处找到设置集合视图的LibraryViewController
类:LibaryViewController class。我的LibraryCell
init看起来像这样:
- (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 :(得分:3)
imageView = [[UIImageView alloc] initWithFrame:frame];
这条线似乎是你的问题。您的图片视图应该是{(0,0),(80,120)},但您要将其超级视图的帧指定为图像的帧,因此您最终会得到第二张图像{(120,10),(80,120)}的超视图,但图像也具有相同的偏移和大小,这给你疯狂的间距。
tl; dr,将你的imageView框架设置为self.bounds,因为你的imageView应该占据整个超级视图。