如何创建方格网格,它们之间没有空格?

时间:2015-12-26 22:59:23

标签: swift uicollectionview uicollectionviewlayout

我想要一个方格网格,它们之间没有空格。目前,我使用自定义UICollectionViewLayout:

class BoardViewLayout: UICollectionViewLayout {
    override func collectionViewContentSize() -> CGSize {
        return self.collectionView!.frame.size
    }
    override func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? {
        let boardSize = Int(sqrt(Double(self.collectionView!.numberOfItemsInSection(0))))
        let index = indexPath.row

        let size = self.collectionView!.frame.width / CGFloat(boardSize)
        let xIndex = CGFloat(index%boardSize)
        let yIndex = CGFloat(index/boardSize)

        let attributes = UICollectionViewLayoutAttributes(forCellWithIndexPath: indexPath)
        attributes.frame = CGRect(origin: CGPointMake(size*xIndex, size*yIndex), size: CGSizeMake(size, size))
        return attributes
    }
    override func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
        var attributesArray = [UICollectionViewLayoutAttributes]()
        for i in 0..<self.collectionView!.numberOfItemsInSection(0) {
            attributesArray.append(self.layoutAttributesForItemAtIndexPath(NSIndexPath(forItem: i, inSection: 0))!)
        }
        return attributesArray
    }
}

看起来像这样: screenshot of the result

我需要摆脱第三和第四行以及第三和第四列之间的空格(见截图) 之后,会出现方形图像而不是只有颜色(边框不会改变),并且背景必须完全适合图像(所以如果所有正方形都被填充并且边框消失,它看起来像一个图像)

我知道这很大程度上取决于系统如何缩放图像等,但必须有办法做到这一点。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您只需将最小间距设置为0:

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { return 0.0; }

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{ return 0.0; }