0

我有一个包含 3 个部分的应用程序,每个部分都有一个页脚。我已经通过 viewForFooterInSection 建立了这一点,并使用 heightForFooterInSection 为每个设置了高度。

这些页脚不是固定大小的,因为它们会根据某些事情改变高度。当高度变化时,这是一个非常不稳定的动画。而不是显示高度变化,它只是从旧高度跳到新高度。

if (condition == YES) {
    return 45;
}

else {
    return 70;
}

有没有办法为这种高度变化设置动画以提供更流畅的体验?谢谢!

4

2 回答 2

0

创建一个自定义页脚视图并保留它的本地变量...

- (UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    return self.footerView;
}

然后你应该可以打电话

[self.footerView updateHeightForCondition:YES]; //or NO

如所须。

这将是......

[UIView animateWithDuration:0.5f animations:^{
    self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, condition ? 45 : 70);
}];

如果您覆盖 viewForFooter,则不再需要覆盖 heightForFooterInSection 或 titleForFooterInSection。

于 2013-01-19T19:12:07.640 回答
0

这适用于对单元格高度进行动画更改,我看不出它为什么不适用于页眉和页脚高度。我目前无法自己测试它,如果它不起作用,请道歉 - 让我知道,我会删除它。

对模型或控制器属性进行任何更改(这样下次调用 heightForFooter.. 时,将返回新值)。然后,只需调用:

[self.tableView beginUpdates];
[self.tableView endUpdates];

调用这两个方法之间没有任何内容似乎很不寻常,但这会导致表重新查询其委托和数据源以获得新大小,并动画到该新大小。通常您会添加或删除行,但也包括更改大小。

于 2013-01-19T19:21:09.103 回答