2015-12-26 16 views
0

Я хочу сетку квадратов без пробелов между ними. В настоящее время я использую пользовательский 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

Мне нужно избавиться от пробелов между третьей и четвертой строки и третьей и четвертой колонке (см скриншот).
Позже будут отображаться квадратные изображения, а не только цвета (границы не изменятся), и будет фон, который должен идеально подогнать изображения (так что это выглядит как одно изображение, если все квадраты заполнены и границы исчезают)

Я знаю, что это сильно зависит от того, как система масштабирует изображения и т. Д., Но должен быть способ сделать это.

Спасибо за помощь

+0

Уже ответил в http://stackoverflow.com/questions/ 17229350/cell-spacing-in-uicollectionview/23542017 # 23542017 – cynicaljoy

ответ

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; }

+0

не работает, тот же результат – lukasbalaz7

Смежные вопросы