Подтвердить что ты не робот

Небольшие промежутки, появляющиеся в разделе UICollectionView

Очень странная проблема на UICollectionView...

У меня есть UIImageView ниже a UICollectionView, и я заметил, что в некоторых точках в collectionView... появляются несколько линий четкой линии /1px четкости, которые появляются ниже ячейки описания...

first

Предполагая, что это была проблема с ячейкой, я исследовал все, что мог думать без радости. Я удвоил эту ячейку, чтобы проиллюстрировать, что проблема происходит между IndexPath секцией 1 и пунктом 6 и 7

Даже когда эта ячейка удваивается... ячейка разделительной линии ниже является частью того же section, поэтому это определенно не нижний колонтитул или заголовок???

second

My flowLayout

flowLayout.scrollDirection = .vertical
flowLayout.minimumInteritemSpacing = 0.0
flowLayout.minimumLineSpacing = 0.0
flowLayout.sectionInset = UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0)
flowLayout.headerReferenceSize = .zero
flowLayout.footerReferenceSize = .zero

Я сделал фон collectionView red, чтобы выделить проблему... Я не знаю, что это за проблема.

Просмотр иерархии

view

Обновление

изменение flowLayout.minimumLineSpacing = 0.0 на -1.0 "исправляет" проблему в некоторых местах... почему бы это значение не оставалось точным вдоль всех ячеек? и остаются на уровне 0.0??

flowLayout.scrollDirection = .vertical
flowLayout.minimumInteritemSpacing = 0.0
flowLayout.minimumLineSpacing = -1.0
flowLayout.sectionInset = .zero
4b9b3361

Ответ 1

Я только ушел и решил это... спустя несколько часов после того, как он надел на него 300 баунтингов.

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

 // calculated CGSize...

  return CGSize(width:collectionView.bounds.size.width,height:ceil(calculatedHeight) 

}

запомнить @2x @3x always ceil ваши расчетные ячейки... UICollectionViews не может взломать 0,5 балла

Ответ 2

Чтобы добавить к ответу @Magoo:

Структура

A CGSize иногда используется для представления вектора расстояния, а не физического размера. В качестве вектора его значения могут быть отрицательными. Чтобы нормализовать структуру CGRect, чтобы ее размер был представлен положительными значениями, вызовите стандартизованную функцию.

В Swift 2.x вам нужно будет использовать:

return CGSizeMake(width:collectionView.bounds.size.width,height:ceil(calculatedHeight)

С Swift 3 вы больше не можете использовать CGSizeMake:

return CGSize(width:collectionView.bounds.size.width,height:ceil(calculatedHeight)
  • Функция ceil округляет число UP до ближайшего целого числа, если это необходимо.
  • Для округления вы имеете floor.