Swift 3 - Sel Pusat UICollectionView dengan Padding

Saya memiliki UICollectionView yang bergulir secara horizontal dan saya ingin satu sel terlihat di layar pada satu waktu.

Saya secara terprogram mengatur lebar dan tinggi sel dengan metode berikut:

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

    let width = collectionView.bounds.size.width - 40
    let height = collectionView.bounds.size.height - 40

    cell.bounds.size = CGSize(width: CGFloat(width), height: CGFloat(height))

    return cell
}

Dan setelah berjuang untuk mengetahui cara bekerja dengan inset, spasi, inset bagian (baik secara terprogram maupun dalam inspektur di XCode), sepertinya saya tidak tahu apa yang perlu saya atur dan di mana saya perlu mengaturnya.

Berikut adalah diagram jarak yang saya inginkan: masukkan deskripsi gambar di sini


person Chris Schlitt    schedule 03.01.2017    source sumber


Jawaban (2)


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
  return CGSize(width: UIScreen.main.bounds.width - 40, height: yourCollectionViewHeight - 40)
}

kiri 20 - tambahkan Footer Size dan Header Size di storyboard dengan width = 20

jarak antar sel - tambahkan Minimum Spacing di storyboard = 40

masukkan deskripsi gambar di sini

Saya bisa saja membuat beberapa kesalahan dan Anda tidak akan mendapatkan tata letak yang persis seperti Anda, tapi saya harap Anda mendapatkan idenya.

person JuicyFruit    schedule 03.01.2017

  1. Jika Anda ingin satu sel terlihat di layar sekaligus, hal yang penting adalah Anda harus mengaktifkan paging untuk CollectionView Anda. Anda dapat melakukannya dengan cepat seperti di bawah ini:
collectionView.isPagingEnabled = true
  1. Sekarang sesuaikan kelas ViewController Anda ke UICollectionViewDelegateFlowLayout dan implementasikan metodenya sizeForItemAt indexPath yang mengembalikan CGsize untuk sel tampilan koleksi Anda. Misalnya:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {    
    return CGSize(width: 200, height: 200)
}
person Ashvini    schedule 27.09.2018