Un appel " [UIView -systemLayoutSizeFittingSize:]` sur un UITableViewCell échoue toujours

Je veux utiliser l'auto-mise en page pour UITableViewCells. Ces cellules d'un tableau dynamique de la hauteur (en fonction de la longueur du texte).

Je suis en utilisant [UIView -systemLayoutSizeFittingSize:] pour calculer la cellule appropriée de la hauteur (de retour dans [UITableView -heightForRowAtIndexPath:]) mais j'obtiens les résultats suivants:

  • Si je passe UILayoutFittingCompressedSize, je remonte un CGSize de (0,0).

  • Si je passe UILayoutFittingExpandedSize, mon application se bloque avec ce message d'erreur:

    *** Échec d'Assertion dans -[NSISLinearExpression incrementConstant:], /SourceCache/Foundation_Sim/Foundation-1043.1/Layout.subproj/IncrementalSimplex/NSISLinearExpression.m:620

(Je suppose que cela signifie que certaines nombre est infini.)

Mon application est simple. - Je calculer la hauteur pour chaque objet, puis de les mettre en cache:

MessageCell *cell = //allocate a new cell...

// set up the cell (assign text, images, etc)

CGSize size = [cell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

self.cellHeight = size.height;  //size always equals (0, 0)

Je fais l'hypothèse que c'est un problème avec les contraintes que je me suis fixés, mais:

  • Si je régler manuellement cellHeight pour une grande valeur, les cellules ont toutes l'air très bien, sauf la hauteur est faux.
  • Interface Builder me donne pas de mises en garde à propos ambigus restrictions
  • [cell hasAmbiguousLayout] retourne NO.
  • Ma cellule a, entre autres choses, un ensemble d'images à 48x48, donc une taille de (0, 0) ne devrait pas satisfaire toutes les contraintes.

Des idées?

  • Je rencontre le même bug que votre, avez-vous résoudre ce problème ?
InformationsquelleAutor Aaron Brager | 2013-07-10