14

In Xcode 6 Beta 7 e tutte le versioni precedenti, avevo una vista di raccolta che aggiornava i suoi vincoli sulle celle quando un iPad ruotava tra orizzontale e verticale. Ora non si aggiorna affatto e in effetti sembra esattamente come lo lascio nel XIB, il che implica che non si aggiorna affatto. Sembra che le viste riutilizzabili che sto usando si aggiornino correttamente, ma certamente le celle non lo sono.iOS 8 GM non aggiorna i vincoli sulle viste di raccolta

Qualcun altro si è già imbattuto in questo problema? Qualcuno ha qualche idea su come superarlo?

Sto usando il simulatore iOS 7.1.

+0

Sembra funzionare correttamente sulla simulazione 8GM, quindi sembra che il problema sia solo 7.1. Controllerò il sim 7.0. –

+0

Lo vedo anche su dispositivo 7.1 e simulatore. Il simulatore ios8 funziona correttamente –

+0

Confermato, questo non funziona su iOS 7.1 o 7.0.3 SIM. Inoltre, non funziona sul mio iPad Air con iOS 7.1.2. –

risposta

28

È necessario creare una sottoclasse di UICollectionViewCell e creare tale sottoclasse come superclasse di TUTTE le celle.

Esempio:

@interface MDTCollectionViewCell : UICollectionViewCell 
@end 

@implementation MDTCollectionViewCell 

- (void)setBounds:(CGRect)bounds { 
    [super setBounds:bounds]; 
    self.contentView.frame = bounds; 
} 

@end 
+2

Puoi anche impostare il frame contentView sul metodo cellForItemAtIndexPath prima di restituire la cella se non vuoi sottoclassi UICollectionViewCell – pablobart

+0

@pablobart Sì, quella era in realtà la correzione originale suggerita da cyphers72 nei forum Apple Dev, ma questa soluzione era detergente per il mio caso d'uso :) –

+0

Grazie per la soluzione. Sto avendo esattamente lo stesso problema. Ora sto usando XCode 6 Beta 7 temporaneo. – Ricky

0

La soluzione che ho trovato è quella di utilizzare il simulatore 8.0 per il test nella simulazione e creare il deployable utilizzando Xcode Beta 7. Quando creo utilizzando Beta 7, l'app viene eseguita senza questo problema su dispositivi che utilizzano iOS 7 Tuttavia, questo non aiuta nessuno che si sta distribuendo nell'app store, quindi mi scuso se questa soluzione non funziona per la tua situazione.

3

Override della cellula personalizzato layoutSubviews come una correzione temporanea:

override func layoutSubviews() { 
    contentView.frame = bounds 
    super.layoutSubviews() 
} 
+0

Questo ha funzionato per me su Xcode 6, usando swift ... Qualche idea su cosa va storto quando non lo usi? –

+0

questo in realtà funziona per me (l'ho usato con CollectionView), quando mischiato con dispatch_async e lo chiamavo dopo reloadData() –

0

nella mia classe UICollectionViewCell ho aggiunto

override func layoutSubviews() { 
    contentView.frame = bounds 
    super.layoutSubviews() 
} 

e ho usato questo codice per aggiornare

dispatch_async(dispatch_get_main_queue(), {() -> Void in 
    // in this case vController is UICollectionView 
    self.vController.reloadData() 
    self.vController.layoutSubviews() 
}) 
Problemi correlati