Objective-C:ナビゲーションバーの背景画像とタイトル
-
28-09-2019 - |
質問
私のナビゲーションバーに背景画像とタイトルが必要です。画像については、カテゴリを書きます。
@implementation UINavigationBar(MyNavigationBar)
- (void)setBackgroundImage {
UIImageView *aTabBarBackground = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"navBarBackgrd.png"]];
[self addSubview: aTabBarBackground];
[self sendSubviewToBack: aTabBarBackground];
[aTabBarBackground release];
}
@end
私はAppDelegateのこのカテゴリを呼び出し、アプリケーション全体に背景画像を持っています。
[navigationController.navigationBar setBackgroundImage];
すべてのViewControllerにはタイトルがあります。
[self setTitle:@"MyTitle"];
しかし、背景画像を設定した後、タイトルに問題があります。
最初のビューではすべての作品で、背景画像とタイトルが表示されます:-)しかし、次のビューでは、タイトルが消えます。背景画像のみが表示されます。たぶんタイトルは画像の下にありますか?
技術的には、両方を表示することができます。このトリックでそれは機能します:
次のViewControllerを開く前に、ナビゲーションバーを非表示にします。
self.navigationcontroller setNavigationBarhidden:はい];
次のViewControllerにナビゲーションバーを表示します。
self.navigationcontroller setNavigationBarhidden:no];
さて、画像とタイトルが表示されますが、このソリューションは最高ではありません;-)
解決
わかった!
@implementation UINavigationBar(MyNavigationBar)
- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed: @"navBarBackgrd.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
他のヒント
iOS5の後、これを行う必要があります。たとえば、AppDelegateで
UIImage *img = [[UIImage imageNamed:@"image.png"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:img forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBarStyle:UIBarStyleBlackTranslucent];
[[UINavigationBar appearance] setTintColor:[UIColor colorWithRed:0 green: 0 blue:0 alpha:1]];
所属していません StackOverflow