为了解释我在寻找什么,我举个例子:在联系人应用程序中,当您单击表格视图第一行中的搜索字段时,它将顺利占据整个屏幕(减去状态栏),包括导航控制器的标题栏。
编辑:我也意识到我很确定这与 UITableView 中的 UISearchDisplayController 有关,UITableView 位于 TabBarController 中的 NavigationController 中。问题是搜索显示只会占用 tableviews 的大小而不是导航控制器。
我在我的程序中通过使用 UIView 动画和调整整个导航控制器框架的大小来在可见屏幕的视图上方开始模仿这一点。见下文:
-(void)SetNavContTitleVis:(BOOL)ishidden {
[UIView beginAnimations:@"frame" context:nil];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration: 0.3];
CGRect frameIn;
if (ishidden) {
frameIn = CGRectMake(0,-46,320,480);
} else {
frameIn = CGRectMake(0,0,320,480-46);
}
self.parentViewController.view.frame=frameIn
[UIView commitAnimations];
}
这工作正常并完成了工作,但感觉就像一个黑客。有没有更简单的方法可以用搜索显示控制器来做到这一点?我觉得这是一个hack,如果显示尺寸发生变化或Apple平板电脑出现等,将来会给我带来麻烦。我已经环顾了一段时间,但没有找到任何简单的设置会迫使 UISearchDisplayController顺利占据导航控制器的标题栏。