Xcode 6 Beta 4, Uipton non è responsabile in UicollectionViewCell
-
20-12-2019 - |
Domanda
Sto usando xcode 6.0 beta 4, trovo che i pulsanti nel UICollectionViewCell
non sono risposta al rubinetto.
Dettagli come:
UICollectionViewController
.
--- UICollectionViewCell
------ UIButton
(UIButton
ha due limiti autolayout
per mettere il UIButton
in centro verticale e centro orizzontale nel Cell
)
Ora fai la dimensione del cell
è qualcosa del genere: (300, 1000)
Eseguire l'app in iPhone Simulator o dispositivo con iOS 7.0 o 7.1.x, il pulsante non è tangibile, ma prova in IOS 8.0 simulatore è ok.
Inoltre se cambio la cella size
su (300, 200)
, il pulsante funziona.
Penso che sia un bug in questa versione beta xcode, giusto?
E dove posso sparare il bug a Apple?
Soluzione
hanno dimenticato di impostare una maschera di autoresizingmas per il contentView di un uicollectionViewCells
Questo fix it
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
. Altri suggerimenti
Sembra che questo non sia in realtà un bug, ma un problema di incompatibilità del targeting dei dispositivi iOS 7 utilizzando Xcode 6. Post Ecotax lo descrive in modo più dettagliato, ma qui è la risposta da Apple DTS:
.In iOS 7, le viste del contenuto delle celle si sono dimezzate tramite maschere autoresizing. In IOS 8, questo è stato modificato, le celle hanno smesso di usare le maschere di autoresigliamento e ha iniziato a ridimensionare la vista del contenuto in LayoutSuSupviews. Se un pennino è codificato in IOS 8 e poi decodificalo su iOS 7, avrai una vista di contenuto senza una maschera di autoresizzante e nessun altro mezzo per cui si taglia. Quindi, se mai modifichi il fotogramma della cella, la vista del contenuto non seguirà.
Le app che vengono distribuite a IOS 7 dovranno lavorare attorno a questo dimensionando la vista del contenuto stessa, aggiungendo maschere di autoresiglia o aggiungendo vincoli.
La soluzione di Alexey sopra farà il trucco però:
- (void)awakeFromNib
{
// Fix for iOS 7 devices targeted using Xcode 6.
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}
.