1

次を使用してナビゲーションを非表示にします。

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

しかし、戻るボタンを非表示にする必要はありません。それは可能ですか?

4

2 に答える 2

3

nevan king は正しいです、ナビゲーション バーの背景画像を変更するか、nil に設定するだけです。nil に設定するか、透明な 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];

このコードは、ナビゲーション バーにプッシュする ViewController ごとに実装する必要があります。viewDidLoadメソッドの内部にも適しています。

于 2012-04-08T18:44:58.217 に答える
0

戻るボタンはナビゲーション バーによって作成され、常にその一部であるため、使用できません。ユーザーが画面に触れたときにナビゲーション バーを非表示にして再表示するか (これは、1 枚の写真を見るときにフォト アプリが行うことです)、ボタンを作成して画面の左上に永続的に配置することができます。下のコンテンツが表示されるように、ナビゲーション バーを部分的に透明にすることもできます。

于 2012-04-08T17:20:30.897 に答える