UITableView - BeginUpdates/EndUpdates 动画设置
Posted
技术标签:
【中文标题】UITableView - BeginUpdates/EndUpdates 动画设置【英文标题】:UITableView - BeginUpdates/EndUpdates Animation Settings 【发布时间】:2014-05-19 22:12:11 【问题描述】:我正在构建一个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];
SlideOutTableViewCell
showView 方法:
- (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:
中发生的更改设置动画
【参考方案1】:
所以我通过反复试验找到了答案:
表格视图更改行高的动画(来自[tableview beginUpdates]
和[tableView endUpdates]
方法)是持续时间为0.3 秒的线性动画(无动画效果)。
【讨论】:
以上是关于UITableView - BeginUpdates/EndUpdates 动画设置的主要内容,如果未能解决你的问题,请参考以下文章
UniGUI中的TUniTreeview中使用AddChild的效率