在将所有内容设置为0时,我在单元格之间获得了小空格。我在cellForItemAtIndexPath
中所做的就是为每个单元格设置backgroundColor
。
这是我的代码:
//collectionView frame
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 150) collectionViewLayout:layout];
...
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
//The cell sizes are divided by the width of the collectionView.
return CGSizeMake(_collectionView.frame.size.width/12, _collectionView.frame.size.width/12);
}
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(0, 0, 0, 0);
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section
{
return 0.0f;
}
- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section
{
return 0.0f;
}
我的收藏视图如下所示。您会看到某些单元格之间存在黑线。是什么造成的?如何删除线?
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:2)
我也遇到了这个问题。感谢@tenric指出,对我来说是的,因为宽度不能被所需列的数量整除。我的解决方案如下:
var itemWidth: CGFloat {
get {
return floor(view.frame.size.width / 7)
}
}
因为我使用AutoLayout,我只是将间隙调整到collectionView的宽度,如下所示(参见widthAnchor):
collectionView?.topAnchor.constraint(equalTo: headerSeparator.bottomAnchor).isActive = true
collectionView?.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
collectionView?.bottomAnchor.constraint(equalTo: footerSeparator.topAnchor).isActive = true
let gap = view.frame.size.width - (itemWidth * 7)
collectionViewWidthConstraint = collectionView?.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -gap)
答案 1 :(得分:0)
我也为此疯狂。我想要一个通用的解决方案,因为我的iPhone每行有3个单元,iPad每行有4个单元,而UICollectionView覆盖了整个屏幕宽度,所有设备的宽度都不同。
我最终通过使用ceil(frame.width / itemsPerRow)使单元格的组合宽度比设备屏幕宽。然后,我计算了一行中单元格的总宽度,并与屏幕宽度(view.frame)进行比较,以获得单元格将创建的宽度溢出。知道溢出后,我将UICollectionView的尾随约束设置为负溢出。这意味着UICollectionView实际上会以一个像素左右溢出屏幕宽度,但在我的情况下,这不是问题。希望下面的代码有助于澄清并让您了解如何解决这个问题。
// calculating cell width
let frame = view.frame
let cellWidth = ceil(frame.width / itemsPerRow)
// adjust UICollectionView to avoid space between cells
let totalCellsWidth = cellWidth * itemsPerRow
let overflow = totalCellsWidth - frame.width
let adjustedConstraint = -overflow
collectionViewsTrailingConstraint.constant = adjustedConstraint