使用UISearchDisplayController时平滑过渡到“全屏”

时间:2009-12-31 19:28:54

标签: iphone objective-c uisearchbar uisearchdisplaycontroller

要解释我在寻找的内容,我将举例说明:在“联系人”应用中,当您单击表格视图第一行中的“搜索”字段时,它将顺利接管整个屏幕(减去状态栏) )包括导航控制器的标题栏。

编辑:我也意识到我很确定这与UITearchDisplayController有关,它位于一个位于TabBarController内的NavigationController中的UITableView中。问题是搜索显示只会占用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顺利拿起导航控制器的标题栏。

1 个答案:

答案 0 :(得分:0)

默认情况下,搜索栏应该像这样制作动画。查看Apple的样本TableSearch