如何在UITableView中为节标题的高度变化设置动画?

don*_*ile 18 iphone objective-c uitableview ios

我已经实现了这个方法来返回节头高度.但是,当部分的高度发生变化时,会立即发生,而不会生成动画.

那有动画吗?

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    if (flatHeader) {
        return 50.0f;
    } else {
        return 100.0f;
    }
}
Run Code Online (Sandbox Code Playgroud)

pre*_*io2 24

我不是100%肯定这将适用于表头,但它适用于表行,所以它值得一试.我有一个headerHeight最初设置为44.0 的实例变量,我将其更改为:

- (void)changeHeight {
    [self.tableView beginUpdates];
    headerHeight = 88.0;
    [self.tableView endUpdates];
}
Run Code Online (Sandbox Code Playgroud)

在我的代码中我返回headerHeightin heightForRowAtIndexPath但你可以尝试heightForHeaderInSection:

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return headerHeight;
}
Run Code Online (Sandbox Code Playgroud)

  • 这很好用,但弹出的区域覆盖了我的第一个UITableViewCell.有任何想法吗?发生这种情况时,有什么方法可以将tableView向下移动? (3认同)

lem*_*nar 12

这有效:

flatHeader = YES;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
[[self tableView] beginUpdates];
[[self tableView] endUpdates];
CGRect frame = [[self headerView] frame];
frame.size.height = [self tableView:[self tableView] heightForHeaderInSection:0];
[[self headerView] setFrame:frame];
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)