У меня есть некоторый код, чтобы сделать макет UICollection в Xcode.Смотрите код.Когда у меня есть следующие значения для вставки раздела, он работает нормальноЯ получаю 3 изображения в строке.Когда я уменьшаю значение inset.left (чтобы попытаться получить меньший разрыв между элементами), внезапно я получаю только 2 элемента в строке.Это действительно странно и озадачивает меня.Может кто-нибудь увидеть что-то неправильное в коде, который может вызывать эту проблему?
fileprivate let itemsPerRow: CGFloat = 3
fileprivate let sectionInsets = UIEdgeInsets(top: 50.0, left: 15.0, bottom: 50.0, right: 15.0)
extension GalleryCollectionViewController : UICollectionViewDelegateFlowLayout {
//1
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
//2
let paddingSpace = sectionInsets.left * (itemsPerRow + 1)
let availableWidth = view.frame.width - paddingSpace
let widthPerItem = availableWidth / itemsPerRow
print("Collection Flow Layout: paddingSpace:\(paddingSpace), availableWidth:\(availableWidth), widthPerItem: \(widthPerItem)")
return CGSize(width: widthPerItem, height: widthPerItem)
}
Я добавил команду печати, чтобы посмотреть, смогу ли я диагностировать проблему.
Так что для левого значения15, я получаю: 414,60,354 и 118
и для значения 5 414,20,394,131.33333333333334
Значит, все они в порядке?
Я также попытался изменить itemsPerRow на 2, и тогда я получил только 1 за строку!Ops!Так что это немного странно ....