Comment animer UITableViewCell hauteur à l'aide d'auto-mise en page?

Il y a beaucoup de questions similaires sur un Débordement de Pile sur UITableViewCell hauteur de l'animation, mais rien ne fonctionne pour de nouvelles iOS8 mise en page automatique piloté par la vue de la table. Ma question:

De cellule personnalisé:

@property (weak, nonatomic) IBOutlet iCarousel *carouselView;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@property (weak, nonatomic) IBOutlet UIButton *seeAllButton;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *carouselHeightConstraint;

Note carouselHeightConstraint. C'est la hauteur de la contrainte pour l'affichage du contenu de la sous-vue (la seule sous-vue).

Hauteur est définie à 230.0f par exemple. Lors du premier chargement, il ressemble:
Comment animer UITableViewCell hauteur à l'aide d'auto-mise en page?

Puis, sur Voir Tous les action que je veux développez cellule, mon code:

- (IBAction)seeAllButtonAction:(id)sender {

  BOOL vertical = !self.carouselCell.carouselView.vertical;
  self.carouselCell.carouselView.type = vertical ? iCarouselTypeCylinder : iCarouselTypeLinear;
  self.carouselCell.carouselView.vertical = vertical;

  [UIView transitionWithView:self.carouselCell.carouselView
                    duration:0.2
                     options:0
                  animations:^{

    self.carouselCell.carouselHeightConstraint.constant = vertical ? CGRectGetHeight(self.tableView.frame) : 230;
    [self.carouselCell setNeedsUpdateConstraints];
    [self.carouselCell updateConstraintsIfNeeded];
    [self.tableView beginUpdates];
    [self.tableView endUpdates];

                  completion:^(BOOL finished) {
                  }];
}

Comme vous pouvez le voir, j'essaie d'utiliser cette bonne vieille solution:

Pouvez-vous animez un changement de la hauteur sur une UITableViewCell lorsqu'il est sélectionné?

Et le résultat:

Comment animer UITableViewCell hauteur à l'aide d'auto-mise en page?

Ma cellule rétrécit à 44.0f hauteur.

Question:

Pourquoi cela se produit? J'attends de voir ma cellule en douceur élargi avec la magie de l'auto-layot.

Remarque:

Je ne veux pas utiliser -tableView:heightForRowAtIndexPath:. C'est de l'auto-mise en page de l'ère, droit?

  • Vous devez toujours utiliser tableView:heightForRowAtIndexPath:. Ce n'est pas une auto-mise en page du travail.
  • ressemble beaucoup à de l'auto-présentation de l'emploi.
  • Je suis totalement d'accord cela devrait maintenant être fait avec Mise en page Automatique. Je suis en train de faire toujours la même chose: l'ajout de contraintes sur la cellule contentView et de dire à la vue de la table pour animer la hauteur. Cependant, je ne pouvais pas le faire fonctionner jusqu'à présent. Avez-vous trouvé une solution pour ce problème?
  • Je v fini par utiliser tableView:heightForRowAtIndexPath:. Il semble que la seule solution maintenant. Triste mais vrai. N'oubliez pas de mettre à jour vos contraintes correctement.
  • J'ai en fait à gérer pour résoudre mon problème, après que j'ai posté ce commentaire, et j'ai utilisé une pure auto-présentation de l'approche: pas d'utilisation de tableView:heightForRowAtIndexPath:. Si vous êtes toujours intéressé, vous pouvez consulter ma solution ici (ExpandableTableViewCell et le projet de l'échantillon). Il est encore beaucoup de travail en cours, même si (mais il fonctionne).
  • cool, je suis intéressé
  • pas très bon à swift. Pourriez-vous brièvement post l'idée de la réponse?

InformationsquelleAutor orkenstein | 2014-11-21