我使用隐藏我的导航:
[self.navigationController setNavigationBarHidden:YES animated:YES];
但我需要不隐藏后退按钮,这是可能的?
我使用隐藏我的导航:
[self.navigationController setNavigationBarHidden:YES animated:YES];
但我需要不隐藏后退按钮,这是可能的?
妮娃王是正确的,但你可以简单地改变导航栏的背景图像或将其设为零。 如果设置为零或提供一个透明的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
方法。
背面按钮被导航栏,总是它的一部分创建的,所以这是不可能的。 可以隐藏,当用户触摸屏幕上再次显示导航栏(这是当你看到一张照片的照片应用程序做什么),或创建一个按钮,并永久拥有它在屏幕的左上角。 你也可以将导航栏部分透明,以便内容下方显示出来。