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

How do I create a custom navigation bar that retains the title, leftBarButtonItem, and rightBarButtonItem. But, has three bigger buttons below them

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

///----------------标题---------------- <>

按钮 1 按钮 2 按钮 3

应该如何实施呢?我正在考虑创建自定义 UINavigationBar。但是,如何将 barButtonsItem 下面的子视图添加到导航栏?

非常感谢任何方向的推动

您不应该尝试自定义 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 来向您展示具体操作方法。