我有UITableViewCell
正在使用自动布局。当用户选择单元格时,我想在向下滑动的细节视图中显示额外信息,从而扩展单元格的底部。
我无法找到正确的方法来做到这一点。
transitionFromView:toView:duration:options:completion:
方法似乎不合适,因为我没有将一个视图替换为另一个视图。
transitionWithView:duration:options:animations:completion:
方法似乎应该可以解决问题,但我无法找出使用它实现目标的正确方法。
这是我最初尝试过的(C#,但Objective-C / Swift等价物应该很明显):
private void AnimateDetailsIntoView()
{
this.detailsView.Hidden = true;
this.ContentView.ConstrainLayout(() =>
this.detailsView.Top() == this.nameLabel.Bottom() &&
this.detailsView.Bottom() == this.ContentView.Bottom() - Layout.StandardSiblingViewSpacing &&
this.detailsView.Left() == this.nameLabel.Left() &&
this.detailsView.Right() == this.nameLabel.Right());
this.AddSubview(this.detailsView);
UIView.Transition(
this,
0.2,
UIViewAnimationOptions.ShowHideTransitionViews | UIViewAnimationOptions.TransitionFlipFromBottom,
() => { },
() => { });
}
这会导致表格单元格旋转"但细节视图实际上并未显示。即使我删除隐藏detailsView
的行,我仍然不会在动画后看到它。
我怀疑这与布局有关,但我不确定如何"成长"细胞垂直。
谁能告诉我我做错了什么?
PS。我意识到,一旦我开始使用初始动画,还有更多工作要做。我必须为之前选择的任何单元格设置动画并删除其详细信息面板。
答案 0 :(得分:0)
根据OP希望扩展和折叠单元格,以下是实现它的过程: -
tableView heightForRowAtIndexPath:
为崩溃单元格指定2个尺寸,为(展开的)详细单元格指定另一个尺寸,通过给出类似BOOL变量的条件" isExpanded"。didSelect
或按钮的操作中,如果您在单元格中使用按钮,只需存储indexpath.row的值以确定要展开的行并添加此代码以重新加载行,这将很容易做拓展的动画技巧[tbl beginUpdates];
[tbl reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationBottom];
[tbl endUpdates];