Я сделал коллекционное представление, которое показывает изображение в формате сетки.Код дается следующим образом ...
class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
@IBOutlet weak var myCollectionView: UICollectionView!
let array:[String] = ["1", "2", "3"]
override func viewDidLoad() {
super.viewDidLoad()
let itemSize = UIScreen.main.bounds.width/3 - 3
let layout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 0, bottom: 10, right: 0)
layout.itemSize = CGSize(width: itemSize, height: itemSize + 100)
layout.minimumInteritemSpacing = 3
layout.minimumLineSpacing = 3
myCollectionView.collectionViewLayout = layout
}
//Number of views
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return array.count
}
//Populate view
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! myCell
cell.myImageView.image = UIImage(named: array[indexPath.row] + ".jpg")
return cell
}
Теперь отображаются такие клетки, как ...
НоЯ хочу, чтобы изображения были видны так ...
Для этого я добавил этот блок кода к концу приведенных выше строк кода ...
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
if array.count == 3 {
if array[indexPath.row] == "1" {
return CGSize(width: 100, height: 200)
}
if array[indexPath.row] == "2" {
return CGSize(width: 100, height: 100)
}
if array[indexPath.row] == "3" {
return CGSize(width: 100, height: 100)
}
}
return CGSize(width: 100, height: 100)
}
Но при этом отображаются такие изображения ...
Что я здесь не так делаю ..?Кроме того, есть ли лучший подход ..?
РЕДАКТИРОВАТЬ 1: Если есть 5 изображений, это показано так ...