Stack Overflow上有很多關於UITableViewCell
高度動畫的類似問題,但是對於新的iOS8自動佈局驅動的表格視圖沒有任何作用。我的問題:如何使用自動佈局來設置UITableViewCell高度的動畫效果?
自定義單元格:
@property (weak, nonatomic) IBOutlet iCarousel *carouselView;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@property (weak, nonatomic) IBOutlet UIButton *seeAllButton;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *carouselHeightConstraint;
注意carouselHeightConstraint
。這是內容視圖的子視圖(唯一的子視圖)的高度限制。例如,
高度設置爲230.0f
。第一次加載它看起來像:
然後,在查看所有行動我想擴大細胞,我的代碼:
- (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) {
}];
}
正如你所看到的,我嘗試使用這個好老辦法:
Can you animate a height change on a UITableViewCell when selected?
而結果:
我的手機收縮至44.0f
高度。
問題:
爲什麼會發生這種情況?我希望看到我的手機能夠順暢地擴展自動layot的魔力。
注:
我dont't要使用-tableView:heightForRowAtIndexPath:
。這是自動佈局時代,對吧?
您仍然需要使用'tableView:heightForRowAtIndexPath:'。這不是自動佈局工作。 – Astoria 2014-11-21 14:30:26
@Astoria,看起來非常像自動佈局工作。 – orkenstein 2015-02-13 22:36:46
@orkenstein我完全同意,現在應該使用自動佈局來完成。我正在嘗試做基本相同的事情:在單元格的contentView上設置約束,並告訴表視圖來爲高度設置動畫。但是,我目前無法實現它的功能。你找到了解決這個問題的方法嗎? – Alex 2015-02-13 23:32:24