Sto usando Xcode 6 Beta 3, iOS 8 SDK. Crea Target iOS 7.0 usando Swift. Si prega di fare riferimento al mio problema passo dopo passo con le schermate di seguito.
Ho un UICollectionView in Storyboard. 1 prototipo UICollectionViewCell che contiene 1 etichetta al centro (nessuna regola di ridimensionamento automatico). Lo sfondo viola doveva contrassegnare un contentView che viene generato in fase di esecuzione dalla cella, suppongo. Tale vista verrà ridimensionata correttamente in base al mio UICollectionViewLayoutDelegate alla fine, ma non su iOS 7. Si noti che sto usando Xcode 6 e il problema si verifica solo su iOS 7.
Quando creo l'app su iOS 8. Va tutto bene.
Nota: il viola è il contentView , il blu è il mio pulsante UIB con angolo arrotondato.
Tuttavia, su iOS 7, tutte le visualizzazioni secondarie all'interno della cella si riducono improvvisamente al frame di (0,0,50,50) e non sono più conformi alla mia regola di ridimensionamento automatico.
Presumo che si tratti di un bug in iOS 8 SDK o Swift o forse Xcode?
Aggiornamento 1: questo problema esiste ancora nell'Xcode 6.0.1 ufficiale! Il miglior modo per aggirare è come quello che KoCMoHaBTa ha suggerito di seguito impostando il frame in cellForItem della cellula (devi comunque sottoclassare la tua cellula). Si è scoperto che si tratta di un'incompatibilità tra iOS 8 SDK e iOS 7 (controlla la risposta di ecotax di seguito citata da Apple).
Aggiornamento 2: incolla questo codice all'inizio di cellForItem e le cose dovrebbero andare bene:
/** 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
ridimensionamento con la cella funziona bene per risolvere il problema. Immagino che in iOS 8 Apple abbia cambiato qualcosa nel modo in cui vengono gestite le visualizzazioni del contenuto delle celle quando vengono create in Interface Builder (che è comunque un po 'una scatola nera). Ma il fatto che cambi comportamento durante il targeting di iOS 7 è sicuramente un bug.
contentView
bordi ai bordi della cella.