Небольшие промежутки, появляющиеся в разделе 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
Ответы
Ответ 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
.