Saya menampilkan beberapa gambar dalam tampilan koleksi. Semuanya memiliki orientasi (lanskap) yang sama kecuali satu, yaitu potret (lihat gambar di bawah):

enter image description here

Saya mencoba membuat gambar potret lebih terpusat, sehingga semuanya memiliki jarak yang merata. Adakah ide tentang cara melakukan ini?

PhotoGalleryViewController.swift:

override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return images.count
}

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! PhotoGalleryCell

    let image = UIImage(named: images[indexPath.row])
    cell.imageView.image = image
    cell.captionLabel.text = captions[indexPath.row]
    return cell
}

func collectionView(_ collectionView: UICollectionView,
                    layout collectionViewLayout: UICollectionViewLayout,
                    sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    var size = CGSize()

    if (indexPath.row == 3)
    {
        size = CGSize(width: 450, height: 600)
    }
    else {
        size = CGSize(width: 940, height: 600)

    }
    return size
}
2
Laura M 13 Maret 2017, 19:09

2 jawaban

Jawaban Terbaik

Saran saya adalah tidak mengubah ukuran sel berdasarkan fakta bahwa gambar potret akan ada di item 3.

Alih-alih memperbarui tata letak sel Anda sehingga gambar apa pun yang ditetapkan untuk tampilan gambarnya, itu akan memusatkan gambar itu sendiri dan memusatkan label di bawah gambar.

1
Matthew Hallatt 13 Maret 2017, 16:19

Dalam metode ViewDidLoad masukkan kode ini:

  let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
  layout.sectionInset = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)
  layout.minimumInteritemSpacing = 0
  layout.minimumLineSpacing = 0
  collectionview.collectionViewLayout = layout

Tambahkan juga ini ke dalam Metode cellForRow:

cell.imageview.contentmode = .aspectfit 

Semoga membantu menyelesaikan masalah Anda.

0
Shobhakar Tiwari 13 Maret 2017, 16:32