目的: 私の UINavigationBar は、特定の背景と特定のラベル フォントでカスタマイズする必要があります。
これは、外観プロトコルを使用して iOS5 で簡単に実現できます。Ok。
ユーザーが iOS5 未満を実行している場合はどうなりますか? デフォルトの UINavigationBar が表示されますが、drawRect をオーバーライドするカテゴリで UINavigationBar を拡張すると表示されません。
質問 1: Prefix.pch で、iOS バージョンに応じて UINavigationBar カテゴリ拡張の条件付き #import を指定するにはどうすればよいですか?
質問 2:質問 1 をなんとか解決できたと仮定すると、これはうまくいきますか? つまり、デバイスが iOS5 でない場合、[UINavigationBar] の外観を設定するのではなく、カテゴリをインポートするだけです。さらに何かする必要がありますか?
編集:これはウラジミールの提案の実装です。現在、iOS4デバイスもシミュレーターもテストしていませんが、うまくいくと思います。
@implementation UINavigationBar (iOS4Appearance)
- (void)drawRect:(CGRect)rect
{
if (self.isiOS5) {
[super drawRect];
} else {
UIImage *background = [UIImage imageNamed: @"navigation-bar"];
[background drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
}
- (BOOL)isiOS5
{
return [[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0;
}
@end
助けてくれてありがとう。