Я реализовал этот метод для возврата высоты заголовка раздела. Однако, когда высота для изменений раздела, это сразу происходит без анимации.
Существует ли анимация для этого?
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if (flatHeader) {
return 50.0f;
} else {
return 100.0f;
}
}
Я не уверен на 100%, что это сработает для заголовка таблицы, но это работает для строк таблицы, так что попробовать стоит. У меня есть переменная экземпляра headerHeight
, изначально установленная на 44.0, и я меняю ее так:
- (void)changeHeight {
[self.tableView beginUpdates];
headerHeight = 88.0;
[self.tableView endUpdates];
}
В моем коде я возвращаю headerHeight
в heightForRowAtIndexPath
, но вы можете попробуйте это в heightForHeaderInSection
:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return headerHeight;
}
Я не тестировал это, но иногда получаю нежелательную анимацию, когда мой UITableViewCells меняет высоту. Причина этого в том, что я рисую свои собственные ячейки и использую для этого CALayers. В (void) layoutSubviews
ячейки я бы изменил размер моего CALayer на размер кадра для ячейки
myLayer.frame = self.bounds;
Когда свойство frame / bounds CALayer изменяется, оно анимируется. Итак, теоретически я бы сказал, что вы можете использовать метод tableView: viewForHeaderInSection:, который позволит вам нарисовать собственный заголовок раздела. Вы можете просто вернуть UIView, который реализует (void) layoutSubviews
, а затем в этом методе do
self.layer.frame = self.bounds;
Просто идея.