なぜこれが機能しないのですか?UINavigationBarをサブクラス化したいので、xcodeで[新しいファイル]-> [Objective Cクラス]をクリックします。クラス:CustomNavBarサブクラス:UINavigationBar
次に、ナビゲーションコントローラーシーンの下のストーリーボードで、ナビゲーションバーをクリックし、そのクラスをCustomNavBarに設定します。
次に、CustomNaVBarクラスに移動し、カスタム画像の背景を追加しようとしました。
initWithFramメソッドで、これを追加しました。
- (id)initWithFrame:(CGRect)frame
{
NSLog(@"Does it get here?"); //no
self = [super initWithFrame:frame];
if (self) {
// Initialization code
UIImage *image = [UIImage imageNamed:@"customNavBarImage.png"];
// [self setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
[self setBackgroundColor:[UIColor colorWithPatternImage:image]];
[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
NSLog(@"Does this get called?"); //no
}
return self;
}
コンソールに出力が表示されません。
代わりに、UINavBarをカスタマイズするためにこれを実行しましたが、サブレーザー処理ほど正しくないように感じます。最初のビューのviewDidLoadで、次の行を追加しました。
- (void)viewDidLoad
{
[super viewDidLoad];
if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)] ) {
UIImage *image = [UIImage imageNamed:@"customNavBarImage.png"];
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
}
}