Xcode 6 Beta 3, iOS 8 SDK kullanıyorum. Swift kullanarak Hedef iOS 7.0 oluşturun. Lütfen aşağıdaki ekran görüntüleri ile sorunuma adım adım bakın.
Storyboard'da bir UICollectionView var. 1 Merkezde 1 etiket içeren UICollectionViewCell prototipi (otomatikleştirme kuralı yok). Mor arka plan Hücre tarafından çalışma zamanında oluşturulan bir contentView işaretlemek oldu sanırım. Bu görünüm sonunda UICollectionViewLayoutDelegate'im temel alınarak yeniden boyutlandırılacak, ancak iOS 7'de değil. Xcode 6 kullandığım ve sorunun yalnızca iOS 7'de oluştuğuna dikkat edin.
Uygulamayı iOS 8'de oluşturduğumda. Her şey yolunda.
Not: Mor contentView , Mavi yuvarlak köşeli UIButton'um.
Bununla birlikte, iOS 7'de, Hücre içindeki tüm subView'ler aniden (0,0,50,50) çerçevesine küçülür ve artık Otomatikleştirme kuralımla hiçbir zaman uyumlu değildir.
Bunun iOS 8 SDK veya Swift veya Xcode'da bir hata olduğunu varsayıyorum?
Güncelleme 1: Bu sorun hala resmi Xcode 6.0.1'de var! Etraftaki en iyi çözüm, hücrenin cellForItem öğesinde çerçeveyi ayarlayarak KoCMoHaBTa'nın aşağıda önerdiği gibidir (Yine de hücrenizi alt sınıflamanız gerekir). Bunun iOS 8 SDK ve iOS 7 arasında bir uyumsuzluk olduğu ortaya çıktı (ecotax'ın aşağıda Apple'dan alıntılanan cevabını kontrol edin).
Güncelleme 2: Bu kodu cellForItem'in başına yapıştırın ve her şey yolunda olmalıdır:
/** 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
hücre ile yeniden boyutlandırmaya zorlama cevabı , sorunu çözmek için iyi çalışıyor. İOS 8'de Apple'ın Interface Builder'da oluşturulduğunda hücre içeriği görünümlerinin işlenme şekli hakkında bir şey değiştirdiğini tahmin ediyorum (yine de biraz kara kutu). Ancak iOS 7'yi hedeflerken davranış değiştirmesi kesinlikle bir hatadır.
contentView
Kenarları hücre kenarlarına sabitleyerek düzeltirim .