Вот что у меня есть:
Представление коллекции с двумя столбцами, каждый из которых расположен на равном расстоянии.
Каждая ячейка загружает SmallCardView.xib.SmallCardView содержит квадратное изображение с текстом ниже.
Проблема:
Я хочу, чтобы ширина представления соответствовала ширине его родительского элемента (ячейки).Это лучше всего иллюстрируется сравнением размеров экрана
Как вы можете видеть выше, ячейка (фиолетовый контур) имеет размеры правильно на обоих экранах, но SmallCardView остаетсятот же размер
Вот код в моем контроллере представления коллекции:
viewDidLoad -
private let spacing: CGFloat = 20.0
override func viewDidLoad() {
super.viewDidLoad()
let layout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: spacing, left: spacing, bottom: spacing, right: spacing)
self.collectionView?.collectionViewLayout = layout
}
sizeForItemAt -
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let numberOfItemsPerRow: CGFloat = 2
let spacingBetweenCells: CGFloat = 20
let totalSpacing = (2 * self.spacing) + ((numberOfItemsPerRow - 1) * spacingBetweenCells) // Amount of total spacing in a row
if let collection = self.collectionView {
let width = (collection.bounds.width - totalSpacing)/numberOfItemsPerRow
return CGSize(width: width, height: width * 1.2)
} else {
return CGSize(width: 0, height: 0)
}
}
Спасибо!