如何创建保留标题的自定义导航栏,leftBarButtonItem和rightBarButtonItem。但是,它们下面有三个更大的按钮

时间:2015-12-10 00:50:37

标签: ios uinavigationbar

想象一下: 左边的汉堡菜单,标题所在的图像,右边的另一个barButtonItem - 然后下面的三个按钮就像tabBarController,但它必须是无缝连接到一个UINavigationBar。

/// ----------------- title -----------------<>

BUTTON 1 BUTTON 2 BUTTON 3

如何实现这一目标?我在考虑创建一个自定义UINavigationBar。但是,如何将barButtonsItem下面的子视图添加到navigationBar?

非常感谢任何推动方向

1 个答案:

答案 0 :(得分:1)

您不应该尝试自定义UINavigationBar。您可以创建扩展导航栏的外观,将视图放在导航栏的底部,禁用栏的半透明度,将栏的阴影图像设置为清晰图像,将其背景图像设置为纯色,然后绘制细线下落视图下方的阴影。然后,您可以将按钮添加到该按钮。例如,您可以在IB中设置视图,添加:

[self.navigationController.navigationBar setTranslucent:NO];

[self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"TransparentPixel"]];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"Pixel"] forBarMetrics:UIBarMetricsDefault];

在视图控制器的viewDidLoad中,您需要扩展导航视图。然后在视图的UIView的子类中扩展导航栏,你可以说:

- (void)willMoveToWindow:(UIWindow *)newWindow
{
    [self.layer setShadowOffset:CGSizeMake(0, 1.0f/UIScreen.mainScreen.scale)];
    [self.layer setShadowRadius:0];

    [self.layer setShadowColor:[UIColor blackColor].CGColor];
    [self.layer setShadowOpacity:0.25f];

}

这可能仍有些令人困惑。幸运的是,Apple提供了带注释的sample code来向您展示如何做到这一点。