在UITableViewCell中为幻灯片详细信息视图设置动画

时间:2015-05-18 06:56:59

标签: ios uitableview animation

我有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。我意识到,一旦我开始使用初始动画,还有更多工作要做。我必须为之前选择的任何单元格设置动画并删除其详细信息面板。

1 个答案:

答案 0 :(得分:0)

根据OP希望扩展和折叠单元格,以下是实现它的过程: -

  1. 在单个原型单元格中设计整个细节单元格。
  2. 现在tableView heightForRowAtIndexPath:为崩溃单元格指定2个尺寸,为(展开的)详细单元格指定另一个尺寸,通过给出类似BOOL变量的条件" isExpanded"。
  3. 现在在tableView的didSelect或按钮的操作中,如果您在单元格中使用按钮,只需存储indexpath.row的值以确定要展开的行并添加此代码以重新加载行,这将很容易做拓展的动画技巧
  4. [tbl beginUpdates];

    [tbl reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationBottom];

    [tbl endUpdates];

    1. 同样可以折叠单元格,只需进行一些逻辑调整,您可以轻松完成。