【发布时间】:2026-02-17 17:45:02
【问题描述】:
我正在构建一个UITableView,其中的单元格在选中时会在下方“滑出”一个附加视图。为此,我使用[tableview beginUpdates] 和[tableView endUpdates] 对表格视图中的行高进行了动画处理,然后我对滑动视图进行了动画处理,以使其与该动画一起平移,使其看起来像是未被发现。我使用的动画效果很好,但与行高的移动方式略有不同。
例如,这是我的牢房。通常,只显示白色部分(由于突出显示为蓝色),但如果您选择一行,灰色视图会从底部滑出,就像该行带有几个按钮的操作菜单:
我想知道的是:表格视图的BeginUpdates/EndUpdates 方法默认使用的动画设置是什么,或者如果不知道,是否可以自定义设置,以便我的行高和滑动视图的动画效果完全一样吗?
tableView 方法:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
if ([[tableView indexPathForSelectedRow] isEqual:indexPath])
return CellHeightAlternate;
return CellHeightNormal;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
SlideOutViewTableViewCell *newCell = (SlideOutViewTableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
[tableView beginUpdates];
[tableView endUpdates];
[newCell showView];
}
SlideOutTableViewCellshowView 方法:
- (void)showView{
[self.slideoutView setFrame:CGRectMake(self.slideoutView.frame.origin.x, 40, self.slideoutView.frame.size.width, self.slideoutView.frame.size.height)];
[UIView animateWithDuration:.25 animations:^{
[self.slideoutView setFrame:CGRectMake(self.slideoutView.frame.origin.x, 70, self.slideoutView.frame.size.width, self.slideoutView.frame.size.height)];
}];
}
【问题讨论】:
-
对不起..我什么都不懂。附言为什么你使用
[tableView beginUpdates]和[tableView endUpdates]没有任何内容? -
@MatteoGobbi 我从这个问题中得到了代码:*.com/questions/460014/…。如果它们之间没有任何内容,它仍然会在单元格上调用重绘,并在选择不同的单元格时为
- tableView: heightForRowAtIndexPath:中发生的更改设置动画
标签: ios objective-c uitableview uiview uianimation