iOS 7 - 使用setToolbarHidden:动画的导航控制器工具栏问题

时间:2014-08-29 11:42:52

标签: objective-c uinavigationbar uitoolbar

在我的选项卡式应用程序中,主视图是一个UITableView,它包含一个隐藏的searchBar(直到你向下滚动并显示,就像Mail应用程序一样)。

在导航栏中,有一个按钮,用于显示带有动画的navigationController工具栏。

工具栏位于tabBar的正上方。

问题是:

  • 动画不流畅,工具栏实际显示之前有一种黑色背景

  • 隐藏navigationBar的工具栏时,动画也会关闭searchBar,而且不应该。这就像整个视图被滑落一样。

我使用的代码是

-(void)showToolbar{
    [UIView animateWithDuration:0.3 animations:^{
        [self.navigationController setToolbarHidden:NO animated:YES];
        [self.navigationController.toolbar setAlpha:1.0];
    }completion:nil];
}


-(void)hideToolbar{
    [UIView animateWithDuration:3.0
                     animations:^{
                         [self.navigationController setToolbarHidden:YES animated:YES];
                         [self.navigationController.toolbar setAlpha:0.0];
                     }
                     completion:nil];
}

这是我得到的一个gif(出于隐私原因而模糊)

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:1)

我认为工具栏实际显示之前黑色背景的原因是它显示了应用程序窗口的背景颜色。如果你这样做

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    [self.window setBackgroundColor:[UIColor yellowColor]];
    return YES;
}

然后在工具栏即将到来之前显示黄色背景。它将显示您在其显示的应用主窗口中设置的任何颜色。 它显示,因为在你的showtoolbar中运行0.3秒,你的工具栏alpha从0.0变为1.0,所以在几毫秒内它将​​是空白的。

所以解决方法是你可以将持续时间改为0.1,或者你可以为你的uiwindow设置相同的backgroundcolor .. :)