为了解释我要找的东西,我将举一个例子:在“联系人”应用程序中,当您单击表视图第一行的搜索字段时,它将平滑地占据整个屏幕(减去状态栏),包括导航控制器的标题栏。
编辑
:我还意识到这与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];
}
这项工作很好,完成了任务,但感觉像个黑客。对于搜索显示控制器,有没有更简单的方法可以做到这一点?我觉得这是一个黑客,如果显示器尺寸改变或苹果平板电脑问世等,我将在未来陷入麻烦。我已经四处寻找了一段时间,但还没有找到任何简单的设置,将迫使uisearchdisplaycontroller占据导航控制器的标题栏顺利。