Pertanyaan UICollectionView menambahkan margin atas


Saya ingin menempatkan kontrol UICollectionView yang menunjukkan jempol secara horizontal (hanya satu baris jempol). Untuk beberapa alasan, UICollectionView menekan 44 piksel ke bawah, sehingga tinggi "0" sebenarnya adalah "44". Saya berasumsi itu mungkin menambahkan ruang ini untuk mempertimbangkan ketinggian bar navigasi (saya hanya berasumsi). Karena UICollectionView saya hanya ada di bagian layar, saya tidak menginginkan margin ini. Apakah ada cara untuk menghapusnya?


74
2017-10-16 18:52


asal


Jawaban:


Masalahnya mungkin di inset konten tampilan koleksi. Coba tambahkan self.automaticallyAdjustsScrollViewInsets = NO; menjadi pengontrol tampilan viewDidLoad metode.


185
2017-10-16 19:08



Anda dapat mengatur ini di storyboard juga.

Pastikan Anda telah memilih ViewController, dan kemudian untick "Adjust Scroll View Insets".

enter image description here

Saya belum menguji apa yang dilakukan oleh metode IB / Storyboard pada iOS6. Dengan metode kode Anda perlu memeriksa apakah VC merespon metode:

if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
self.automaticallyAdjustsScrollViewInsets = NO;
}

87
2018-01-14 11:54



Saya menemukan bahwa menambahkan:

self.edgesForExtendedLayout = UIRectEdgeNone;

Dalam pengontrol tampilan saya memuat UICollectionView dalam memecahkan masalah karena saya tidak bisa mendapatkan jawaban yang diterima untuk bekerja.

Pertanyaan yang saya temukan jawaban ini dapat ditemukan sini dan memberikan penjelasan yang sangat mendalam dan menarik tentang perbedaan antara inset tampilan gulir yang disesuaikan secara otomatis, tata letak yang diperpanjang, dan tepi untuk tata letak yang diperpanjang.

Layak dibaca


16
2018-06-18 00:43



Mungkin Anda dapat mencoba memaksa nilai ini pada 0 menggunakan tata letak aliran Delegasi tampilan koleksi:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section
{
    return UIEdgeInsetsMake(PADDING_TOP, PADDING_LEFT, PADDING_BOTTOM, PADDING_RIGHT);
}

Ubah nilai padding Anda.


5
2017-10-16 18:57



Swift 3:

Pertama Anda ingin mengatur viewControllers automaticallyAdjustsScrollViewInsets salah:

self.automaticallyAdjustsScrollViewInsets = false

Kemudian, Anda harus dapat menyesuaikan inset sisi yang sesuai:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    //top, left, bottom, right
    return UIEdgeInsets(top: 10, left: 0, bottom: 0, right: 0)
}

2
2018-01-22 06:53



Serupa dengan jawaban @Sviatoslav, Anda dapat mencoba hal berikut:

- (void) viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];

    yourCollectionView.contentOffset = CGPointMake(0, 0);
}

-3
2017-07-02 00:30