可以您需要一个导航控制器,其根视图是一个表视图。然后,可能通过用户输入,您希望此表视图向上滑动100像素,然后在底部出现另一个视图。当另一个视图停留在那里时,用户可以继续使用表视图。
以下是我的操作方法:
创建一个通用视图控制器(让我们称之为NavigationWithAuxiliaryViewController
)。这个类的根视图覆盖了所有的应用程序窗口。
该视图有一个<code>UINavigationController</code>的实例作为其属性,例如<code>navController</code>。它还有一个UIView(用于另一个视图)作为其属性(例如,auxView
)。将另一个视图放置在底部。但是,此视图在默认情况下是隐藏的。此外,UINavigationController的根视图的框架覆盖了整个视图。
当您决定压缩表视图时,请修改UINavigationController的frame
属性。做这样的事(不过不要这么难看):
if (slideViewOn) {
[UIView beginAnimations:@"slideUp" context:nil];
navController.view.frame = CGRectMake(0, 0, 320, 260);
auxView.hidden = NO;
[UIView commitAnimations];
} else {
[UIView beginAnimations:@"slideDown" context:nil];
navController.view.frame = CGRectMake(0, 0, 320, 480);
auxView.hidden = YES;
[UIView commitAnimations];
}
压缩整个导航/表格内容的最简单方法是修改导航控制器的整个框架,这就是为什么您需要一个单独的视图(在导航控制器之外)用于另一个视图。