Доброго дня! Прохожу курс по CollcectionView, приложение с фото собак. Делаю все по уроку, но при присвоении imageView картинки слетают размеры ячеек. Без imageView:
С ImageView:
Констрейнты для imageView установлены. Что можете посоветовать?
Код контроллера:
class PhotosCollectionViewController: UICollectionViewController {
let itemsPerRow: CGFloat = 2 //Коллчичество ячеек в ряду
let sectionInserts = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20) //Отсупы
var photos = [UIImage]()
override func viewDidLoad() {
super.viewDidLoad()
createPhotos()
//Другой вариант задачи layout
// let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
// layout.itemSize = CGSize(width: 70, height: 30)
// layout.sectionInset = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
// layout.minimumLineSpacing = 1
// layout.minimumInteritemSpacing = 1
}
// MARK: UICollectionViewDataSource
override func numberOfSections(in collectionView: UICollectionView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of items
return photos.count
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "PhotoCell", for: indexPath) as! PhotoCell
cell.dogImageView.image = photos[indexPath.item]
// Configure the cell
cell.backgroundColor = .black
return cell
}
func createPhotos() {
for i in 1...15 {
guard let image = UIImage(named: "dog\(i)") else {return}
photos.append(image)
}
}
}
extension PhotosCollectionViewController: UICollectionViewDelegateFlowLayout {
//Определяет размер ячеек
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let peddingWidth = sectionInserts.left * (itemsPerRow + 1) //Длина всех отступов в ряду, для 2 ячеек = 3*20=60
let availableWidth = collectionView.frame.width - peddingWidth //Доступная ширина
let widthPerItem = availableWidth / itemsPerRow //ширина одного объекта
return CGSize(width: widthPerItem, height: widthPerItem)
}
//Устанавливает границы для ячеек
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
return sectionInserts
}
//Устанавливает отсупы между линиями
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return sectionInserts.left
}
//Устанавливает растояние между самими объектами
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return sectionInserts.left
}
}