Saya menggunakan Xcode 6 Beta 3, iOS 8 SDK. Bangun Target iOS 7.0 menggunakan Swift. Silakan merujuk masalah saya selangkah demi selangkah dengan tangkapan layar di bawah ini.
Saya memiliki UICollectionView di Storyboard. 1 Prototipe UICollectionViewCell yang berisi 1 label di tengah (tidak ada aturan autoresizing). Latar belakang ungu adalah untuk menandai contentView yang dihasilkan dalam runtime oleh Cell kurasa. Pandangan itu akan diubah ukurannya dengan benar berdasarkan pada UICollectionViewLayoutDelegate saya pada akhirnya, tetapi tidak pada iOS 7. Perhatikan bahwa saya menggunakan Xcode 6 dan masalahnya hanya terjadi pada iOS 7.
Ketika saya membangun aplikasi di iOS 8. Semuanya baik-baik saja.
Catatan: Ungu adalah contentView , Biru adalah UIButton saya dengan sudut bulat.
Namun, pada iOS 7, semua subViews di dalam Cell tiba-tiba menyusut ke bingkai (0,0,50,50) dan tidak pernah lagi mematuhi aturan Autoresizing saya lagi.
Saya berasumsi ini adalah bug di iOS 8 SDK atau Swift atau mungkin Xcode?
Pembaruan 1: Masalah ini masih ada di Xcode 6.0.1 resmi! Pekerjaan terbaik di sekitar adalah seperti apa yang disarankan KoCMoHaBTa di bawah ini dengan mengatur bingkai di cellForItem sel (Anda harus subkelas sel Anda). Ternyata ini adalah ketidakcocokan antara iOS 8 SDK dan iOS 7 (lihat jawaban ecotax di bawah yang dikutip dari Apple).
Pembaruan 2: Tempel kode ini di awal cellForItem Anda dan semuanya akan baik-baik saja:
/** Xcode 6 on iOS 7 hot fix **/
cell.contentView.frame = cell.bounds;
cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
/** End of Xcode 6 on iOS 7 hot fix **/
contentView
mengubah ukuran dengan sel berfungsi dengan baik untuk menyelesaikan masalah. Saya kira di iOS 8 Apple mengubah sesuatu tentang cara tampilan konten sel ditangani ketika dibuat di Interface Builder (yang masih sedikit kotak hitam). Tetapi fakta bahwa itu mengubah perilaku ketika menargetkan iOS 7 pasti bug.
contentView
tepi ke tepi sel.