我已经研究了一段时间了,无法弄清楚如何让我的细胞正确显示。关于此问题有很多Stack Overflow问题,但我似乎无法弄清楚我的情况。我在UITableViewController之上有一个CollectionView(不在表视图单元格内)。我正在尝试让我的集合视图单元格显示3个水平行,我需要它来调整到不同的iPhone& iPad屏幕尺寸。我附上了两张照片。一个显示我的故事板视图控制器,另一个显示模拟器的显示方式。单元格行之间总是有很大的间隙。我希望它像网格一样显示(如iPhone照片应用程序)。以下是我的UICollectionView的以下代码:
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return _foursquarePhotoArray.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"photoCell";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
UIImageView *wineryImageView = (UIImageView *)[cell viewWithTag:100];
Photo *photo = [_foursquarePhotoArray objectAtIndex:indexPath.row];
dispatch_async(dispatch_get_main_queue(), ^{
[wineryImageView setImageWithURL:[NSURL URLWithString:photo.photoURLString] placeholderImage:[UIImage imageNamed:@"Grapes"]];
});
return cell;
}
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
int numberOfCellInRow = 5;
CGFloat cellWidth = collectionView.bounds.size.width/numberOfCellInRow;
return CGSizeMake(cellWidth, cellWidth);
}
答案 0 :(得分:0)
试试这个:
- (CGFloat) collectionView:(UICollectionView *)collectionView layout:(UICollectionView *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
return 0; // This is the minimum inter line spacing, can be more
}
答案 1 :(得分:0)
如果您使用的是UICollectionViewFlowLayout
(不是自定义布局),您可以在视图控制器中通过collectionView
(类似self.collectionView.collectionViewLayout
)来调整布局的属性,尤其是查看minimumInteritemSpacing
和minimumLineSpacing
属性。
minimumInteritemSpacing
和minimumLineSpacing
控制与布局的scrollDirection相关的不同空格,因此您可以尝试将它们都设置为0,或者仅调整它们两者。
如果您的收藏夹视图中有一个笔尖/故事板,并且没有使用自定义布局,那么您可以在尺寸检查器中调整这些值:
我不确定我是否理解正确,但您是否也对细胞的大小有问题,还是只是侧面信息?
答案 2 :(得分:0)
您需要做的是根据需要设置最小间距(首先检查它是否为0 0),还要添加单元格的高度和宽度,如下所示: -
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize{
return CGSizeMake(collectionView.frame.size.width/5, collectionView.frame.size.height/3)
}
同时检查你对imageView的约束是0,0,0,0(顶部,底部,前导,尾随)。
注意: - 如果你在min间距中放入一些值,那么你必须从单元格的大小减去它,例如,如果你将2作为单元格的最小间距,然后从宽度减小它(collectionView .frame.size.width / 5 - 2)并假设你为行的最小间距取3,然后从高度减去它(collectionView.frame.size.height / 5 - 3)。基本上“对于单元”是水平行中单元之间的间隔,而“对于行”是垂直列中单元之间的间隔。