隐藏导航栏,但没有后退按钮(Hide Navigation Bar but not the back

2019-07-28 20:58发布

我使用隐藏我的导航:

[self.navigationController setNavigationBarHidden:YES animated:YES];

但我需要不隐藏后退按钮,这是可能的?

Answer 1:

妮娃王是正确的,但你可以简单地改变导航栏的背景图像或将其设为零。 如果设置为零或提供一个透明的BG-图像,你会实现你需要的效果。

对于iOS> = 5.0,你可以简单地设置外观:

if([navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) // needed if iOS older than 5.0 is also supported
    [navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

你可以做任何你有一个指针到您的导航栏。 例如内部viewDidLoad你的方法ViewController

对于老版本的iOS你以一需要一个解决办法UINavigationBar和覆盖drawRect方法:

@implementation UINavigationBar (BackgroundImage)
- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @""];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

如果你想支持所有iOS版本两种方法都兼容。
因此,你应该记住,这后退按钮使用相同的背景图片。 所以,你需要做一个自定义。

UIImage *bgImageNormal = [UIImage imageNamed:@"backButtonImage.png"];

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage: bgImageNormal forState:UIControlStateNormal];

button.frame= CGRectMake(0.0, 0.0, bgImageNormal.size.width, bgImageNormal.size.height);
[button addTarget:self action:@selector(navigationBarBackButtonTouchUpInside:) forControlEvents:UIControlEventTouchUpInside]; // your action method here

UIBarButtonItem *closeButton = [[UIBarButtonItem alloc] initWithCustomView:button];
self.navigationItem.leftBarButtonItem = closeButton;
[closeButton release];

此代码需要对你是推到您的导航栏中的每个视图控制器来实现。 它的好地方,也是里面viewDidLoad方法。



Answer 2:

背面按钮被导航栏,总是它的一部分创建的,所以这是不可能的。 可以隐藏,当用户触摸屏幕上再次显示导航栏(这是当你看到一张照片的照片应用程序做什么),或创建一个按钮,并永久拥有它在屏幕的左上角。 你也可以将导航栏部分透明,以便内容下方显示出来。



文章来源: Hide Navigation Bar but not the back button