我有一个包含3个部分的应用程序,每个部分都有一个页脚。我已经通过viewForFooterInSection建立了这个,并使用heightForFooterInSection为每个设置了高度。
这些页脚不是固定大小,因为它们会根据某些内容改变高度。当高度改变时,它是一个相当不稳定的动画。它不是显示高度变化,而是从旧高度跳到新高度。
if (condition == YES) {
return 45;
}
else {
return 70;
}
有没有办法动画这个高度变化以提供更流畅的体验?谢谢!
答案 0 :(得分: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。
答案 1 :(得分:0)
这适用于动画更改单元格高度,我看不出它为什么它也不适用于页眉和页脚高度。我现在无法自己测试这个,如果它不起作用,请道歉 - 让我知道,我会删除它。
对模型或控制器属性进行任何更改(以便下次调用heightForFooter ..时,将返回新值)。然后,只需致电:
[self.tableView beginUpdates];
[self.tableView endUpdates];
调用这两个方法之间没有任何内容似乎很不寻常,但这会导致表重新查询其委托和数据源以获取新大小,并为该新大小设置动画。通常您已添加或删除了行,但也涵盖了更改大小。