Comment obtenir la mise en page automatique de la taille de la UICollectionViewCells dans iOS 8? (systemLayoutSizeFittingSize retourne la taille avec une hauteur nulle dans iOS 8)

Depuis iOS 8 [UIColletionViewCell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize] renvoie une taille avec une hauteur de 0.

Voici ce que fait le code:

Pour déterminer la taille de la cellule dans un UICollectionView dans iOS 7-je utiliser systemLayoutSizeFittingSize: sur une cellule définie dans un fichier xib à l'aide de mise en page automatique. La taille dépend de la taille de la police d'un UILabel être une sous-vue de la UICollectionViewCell dans mon fichier xib. L'étiquette de police est fixé à UIFontTextStyleBody. Donc, fondamentalement, de la cellule la taille dépend de la taille de la police réglages effectués dans iOS 7.

Voici le code en lui-même:

+ (CGSize)cellSize {
    UINib *nib = [UINib nibWithNibName:NSStringFromClass([MyCollectionViewCell class]) bundle:nil];

    //Assumption: The XIB file only contains a single root UIView.
    UIView *rootView = [[nib instantiateWithOwner:nil options:nil] lastObject];

    if ([rootView isKindOfClass:[MyCollectionViewCell class]]) {
        MyCollectionViewCell *sampleCell = (MyCollectionViewCell*)rootView;
        sampleCell.label.text = @"foo"; //sample text without bar

        [sampleCell setNeedsLayout];
        [sampleCell layoutIfNeeded];

        return [sampleCell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
    }

    return CGSizeZero;

}

Il fonctionne parfaitement bien dans iOS 7, mais pas dans iOS 8. Malheureusement, je n'ai aucune idée de pourquoi.

Comment puis-je obtenir la mise en page automatique de la taille de la UICollectionViewCells dans iOS 8?

PS: à l'Aide de

 return [sampleCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

au lieu de

 return [sampleCell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

que quelqu'un pourrait le suggérer, ne fait aucune différence.

  • J'ai le même problème: sur iOS 7 [cellule systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].hauteur retourne la bonne taille: sur iOS 8 toujours 0. Je trouve que c'est la construction soit avec iOS7 OU iOS 8 Kits de développement logiciel. Désolé je ne peux pas aider, mais heureux que je ne suis pas le seul! J'ai déposé ce radar: 17959753
  • J'ai exactement le même problème. J'ai été jouer avec elle toute la journée et ne pouvais pas trouver une solution. Changer l'collectionViewCell.contentView n'a pas aidé.
  • Je vais avoir le même problème, l'expérimentation a montré qu'elle pourrait avoir quelque chose à faire avec les contraintes ajoutée via interface builder qui sont contre la cellule de vue au lieu de la cellule.contentView. Ajout de contraintes avec le code contre la contentView résout ce problème en partie
  • c'est UICollectionViewCells IB masque le contenu de la vue, alors qu'avec UITableViewCells il ne l'est pas, ce qui rend plus difficile de savoir où les contraintes sont en cours de création. Comme maremmle dit dans la question, [sampleCell.contentView systemLayoutSizeFittingSize:...] travaille dans la vue tableau de cellules. La chose étrange ici, c'est que c'est définitivement cassé/modifié sur iOS 8, depuis la construction soit avec SDK échoue sur un iOS 8 appareil.
  • qu'entendez-vous par résoudre partiellement? La hauteur de revenir en tant que non-zéro?
  • Je veux dire, il serait de retour de la taille correcte, mais le contenu de la cellule n'est pas toujours visible jusqu'
  • Nous ne pouvons que prier pour que ce problème est résolu par Apple avec le GM, comme nous ne pouvons pas essayer si il a été fixé avec la Bêta 6. Quelqu'un s'est déjà trouvé une solution raisonnable?
  • Pas encore fixé sur Xcode 6 Beta 7.
  • Après avoir fait quelques tests, il semble que le travail sur iOS8 GM construit avec Xcode 6 GM.
  • Pour moi, Xcode 6 GM il fonctionne sous iOS 8 mais maintenant, iOS 7 retourne 0! =(
  • Je suis d'avoir exactement le même problème! Veuillez mettre à jour ici si vous trouver une solution. Si son affectant iOS 7, serait-ce un bug avec XCode et pas l'iOS 8 GM?
  • J'ai trouvé un correctif dans un autre Thread pour ça: stackoverflow.com/questions/24750158/...

InformationsquelleAutor martn_st | 2014-08-12