私は自分のアプリのルートとしてナビゲーションコントローラを持っており、外観プロキシを使用してiOS 5の外観をカスタマイズしていますが、iOS 4ではカテゴリを使用してdrawRectをオーバーライドしたいと考えていました:ただし、すべてのナビゲーションバーはカテゴリから予期されるように影響を受けていました。カスタムNavigationBar
私はMail作者やSMS作曲家のような "システム"ポップアップを改ざんしたくないので、彼らのバーは青色でシステムのようにしたい。
私自身のUINavigationControllerをxibで作成しようとしましたが、NavigationBarのクラスをUINavigationBarのカスタムサブアースに変更しようとしました。しかし結果は画面上では全く影響を及ぼさない。
私は次の記事について認識していますが、期待どおりの解決策を得ることができませんでした。方法:
_myNavigationController = [[UINavigationController alloc] initWithRootViewController:someVC];
if([[BT_NavigationController class] respondsToSelector:@selector(appearance)]){
// some iOS 5 magic in here !
[_myNavigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"topbar.png"];
}else{
// Probably looking at app store refusal
CustomBar * bar = [[CustomBar alloc] init];
// [_myNavigationController setNavigationBar: bar];
[bar release];
}
[parentView presentModalViewController:_myNavigationController animated:YES];
は、ナビゲーションバーのクラスを再割り当て、私はまたのためのXIBを持っていたUINavigationControllerを作成することを回避するために作業を行いますが、文書化されていないsetNavigationBarを使用しています How to subclass UINavigationBar for a UINavigationController programmatically?
私の最初の試み私のカスタムクラスには、drawRect:メソッドにブレークポイントを配置すると、私はこれが呼び出されていないことがわかります。
なぜ、私のコードがペン先をロードしていないと思われるので、ナーブバーが私のカスタムクラスであり、UINavigationBarではないことを認識していないようです。
ヒントをお寄せいただきありがとうございます。
Navコントローラにこれを設定すると、その後の詳細ビューのバータイトルとバーボタンがイメージの後ろに配置されているようです。 – Daniel
navigationBarでsendSubviewToBack :(またはinsertSubview:atIndex :)を使用する必要があります。ナビゲーションバーのサブビューによって異なります。 – teriiehina