代码之家  ›  专栏  ›  技术社区  ›  mjdth

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

  •  2
  • mjdth  · 技术社区  · 15 年前

    为了解释我要找的东西,我将举一个例子:在“联系人”应用程序中,当您单击表视图第一行的搜索字段时,它将平滑地占据整个屏幕(减去状态栏),包括导航控制器的标题栏。

    编辑 :我还意识到这与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占据导航控制器的标题栏顺利。

    1 回复  |  直到 15 年前
        1
  •  0
  •   gerry3    15 年前

    默认情况下,搜索栏的动画应该是这样的。看看苹果的样品 TableSearch .