2013-05-13 20 views
1

我把数据结构化为一棵树(并在UITableView中显示),我想通过使用UINavigationController并将子视图推送到堆栈来显示它的方式。问题是我的UITableView(在iPad应用程序中)仅占用屏幕的1/6(​​在此应用程序中有一个UINavigationController可处理其他全屏iPad屏幕,因此使用NavigationController来控制表的等级是个好方法)。没有导航控制器的分级的UITableView

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

我想创建几个TableViews,然后只是为了制作一个表格的动画调整大小(从全宽到0的TableView,我们将离开,并从0到宽度与另一个的同时)像赛格效应 - 但我不确定这是否是一个好方法。

回答

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。

相关问题