Xcode 6 bêta 4, UIButton n'est pas responsable dans le collectionviewcell
-
20-12-2019 - |
Question
J'utilise Xcode 6.0 bêta 4, je trouve que les boutons de la UICollectionViewCell
n'est pas la réponse à la tap.
Détails:
UICollectionViewController
--- UICollectionViewCell
------ UIButton
(UIButton
a deux autolayout
les contraintes de mettre la UIButton
dans le centre vertical et horizontal au centre de la Cell
)
Maintenant, faites la cell
la taille est quelque chose comme:(300, 1000)
Exécuter l'application dans le Simulateur d'iPhone ou de l'appareil avec iOS 7.0 ou 7.1.x, le bouton n'est pas palpable, mais le test en iOS 8.0 simulateur c'est OK.Aussi si je change la cellule size
pour (300, 200)
, le bouton fonctionne.
Je pense que c'est un bug dans cette Xcode version bêta, droit?
Et où je peux le feu le bug à Apple?
La solution
Ils ont oublié de définir un autoresizingMask pour la contentView d'un UICollectionViewCell
ce correctif de
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
Autres conseils
Il semble que ce n'est pas réellement un bug, mais un problème d'incompatibilité de ciblage iOS 7 appareils à l'aide de Xcode 6. ecotaxe post décrit plus en détail, mais voici la réponse d'Apple DTS:
Dans iOS 7, les cellules de contenu " points de vue de la taille d'eux, par le biais d'un redimensionnement automatique des masques.Dans iOS 8, elle a été changée, les cellules cessé de l'utiliser d'un redimensionnement automatique des masques et a commencé dimensionnement de l'affichage du contenu dans layoutSubviews.Si la plume est codée dans iOS 8 et décoder ensuite sur iOS 7, vous avez un affichage du contenu d'un redimensionnement automatique sans masque et sans autres moyens par lesquels la taille elle-même.Donc si jamais vous changer l'image de la cellule, le contenu de la vue ne le suivra pas.
Les applications en cours de déploiement de revenir à iOS 7 sera de contourner ce problème en dimensionnement de l'affichage du contenu lui-même, l'ajout d'un redimensionnement automatique des masques, ou d'ajouter des contraintes.
Alexey la solution ci-dessus fera l'affaire si:
- (void)awakeFromNib
{
// Fix for iOS 7 devices targeted using Xcode 6.
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}