我将数据结构化为树(并在UITableView中显示),我希望通过使用UINavigationController
并将子视图推送到堆栈来显示它的方式。问题是我的UITableView
(在iPad应用中)仅占屏幕的1/6(有UINavigationController
处理此应用中的其他全屏iPad
屏幕,因此使用{ {1}}控制表的级别是好方法。)
是否有一种简单的方法可以在不使用NavigationController
的情况下获得改变TableView
级别的良好视觉效果?现在我只是更改数据源并重新加载数据,但这会像屏幕上的闪烁一样(用户无法真正看到,数据的结构是树状的)。
我想创建一些NavigationController
然后只是设置一个表的调整大小(从全宽到0,我们要离开的TableView,从0到另一个的同时)只是为了制作类似segue效果的东西 - 但我不确定这是否是一个好方法。
答案 0 :(得分:1)
您可以将reloadSections:withRowAnimation:
与UITableViewRowAnimationLeft
和UITableViewRowAnimationRight
一起使用,而不是默认reloadData
。这看起来就像你正在寻找的推动力。
答案 1 :(得分: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。