Ci sono molte domande simili su Stack Overflow sull'animazione di altezza UITableViewCell
, ma non funziona per la nuova vista tabella di auto-layout iOS8. Il mio problema:Come animare l'altezza di UITableViewCell usando il layout automatico?
cella personalizzato:
@property (weak, nonatomic) IBOutlet iCarousel *carouselView;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@property (weak, nonatomic) IBOutlet UIButton *seeAllButton;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *carouselHeightConstraint;
Nota carouselHeightConstraint
. Questo è un vincolo di altezza per la sottoview della vista del contenuto (l'unica sottoview).
L'altezza è impostata su 230.0f
ad esempio. Al primo carico assomiglia:
Poi, il Vedi tutti i azione che voglio espandere cellulare, il mio codice:
- (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) {
}];
}
Come potete vedere, cerco di utilizzare questo bene vecchia soluzione:
Can you animate a height change on a UITableViewCell when selected?
E il risultato:
La mia cella restringe-44.0f
altezza.
Domanda:
Perché questo accade? Mi aspetto di vedere la mia cella espandersi senza problemi con la magia dell'auto-layot.
Nota:
ho Dont't desidera utilizzare -tableView:heightForRowAtIndexPath:
. È l'era del layout automatico, giusto?
È ancora necessario utilizzare 'tableView: heightForRowAtIndexPath:'. Questo non è un lavoro di layout automatico. – Astoria
@Astoria, assomiglia molto al lavoro di impaginazione automatica. – orkenstein
@orkenstein Sono assolutamente d'accordo che ora dovrebbe essere fatto con Auto-Layout. Sto provando a fare praticamente la stessa cosa: impostare i vincoli sul contenuto della cellaView e dire alla vista tabella di animare l'altezza. Tuttavia, non ho potuto farlo funzionare finora. Hai trovato una soluzione per questo problema? – Alex