如何创建保留标题、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 来向您展示具体操作方法。
想象一下: 左边是汉堡包菜单,标题是图像,右边是另一个 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 来向您展示具体操作方法。