1

我将数据结构化为一棵树(并显示在 UITableView 中),我想以通常使用UINavigationController子视图并将子视图推送到堆栈的方式来展示它。问题是我的UITableView(在 iPad 应用程序中)只占屏幕的 1/6(在这个应用程序中有一个UINavigationController可以处理其他全屏iPad屏幕,所以使用NavigationController控制表格的级别是好方法)。

TableView有没有一种简单的方法可以在不使用的情况下获得良好的视觉效果NavigationController?现在我只是更改数据源并重新加载数据,但这会在屏幕上闪烁(用户无法真正看到,数据的结构是树状的)。

我想创建一些TableViews然后只是动画调整一个表的大小(从全宽到 0 我们要离开的 TableView,从 0 到另一个同时的宽度)只是为了制作类似 segue 效果的东西 -但我不确定这是否是一个好方法。

4

2 回答 2

1

您可以使用reloadSections:withRowAnimation:withUITableViewRowAnimationLeftUITableViewRowAnimationRight而不是 default reloadData。这看起来像您正在寻找的推动力。

参考: http: //developer.apple.com/library/ios/documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/reloadSections :withRowAnimation :

于 2013-05-13T10:11:02.527 回答
0

您可以尝试此代码(设置正确的值后:))

__block CGRect frame = tableView.frame;
    [UIView animateWithDuration:0.5 animations:^{
          frame.origin.x -=tableView.frame.size.width;
    } completion:^(BOOL finished) {
        frame.origin.x = yourViewThatContainsTheTable.frame.size.width
        tableView.frame = frame;
        [tableView reloadData];
        [UIView animateWithDuration:0.3 animations:^{
            frame.origin.x = 0;
            tableView.frame = frame;
        }];
    }];

基本上,如果您使用 UIView 的子类,您可以使用[UIView animateWith...]方法来执行简单的动画,或者您可以使用 CAAnimations/CABasicAnimation/CAAnimationGroup/CAKeyframeAnimation 在 UIView 的子类上制作更复杂的动画。

如果你想要一个 UIViewController 的自定义过渡,你可以使用 CATransition。

于 2013-05-13T10:04:09.953 回答