Есть много похожих вопросов о переполнении стека о анимации высоты UITableViewCell
, но ничего не работает для нового табличного представления iOS8 с автоматической компоновкой. Моя проблема:
Пользовательская ячейка:
@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
. Это ограничение по высоте для subview представления контента (единственное подвью).
Высота установлена на 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) {
}];
}
Как вы можете видеть, я стараюсь использовать это хорошее старое решение:
Можете ли вы изменить изменение высоты на UITableViewCell при выборе?
И результат:
Моя ячейка сжимается до 44.0f
height.
Вопрос:
Почему это происходит? Я ожидаю, что моя камера будет плавно расширяться с помощью магии авто-layot.
Примечание:
Я не хочу использовать -tableView:heightForRowAtIndexPath:
. Это авто-макет эры, правильно?