iOS6 のカスタム レイアウトの場合、UINavigationBar のサブクラスを作成し、drawRect メソッドをオーバーライドしました。すべてのコントローラーがこの効果を持つ必要があるわけではないため、インターフェイス ビルダーでクラスを指定します。これが、カテゴリを使用できない理由でもあります。
しかし、iOS7 では、オーバーライドされた動作ではなく、デフォルトのナビゲーションバーを使用したいと考えています。以下のコードは機能しません。
-(void)drawRect:(CGRect)rect
{
if([self isOS7]) {
[super drawRect:rect];
}
else {
// custom drawing
}
}
問題は、drawRect を実際に定義することによって、ios7 がステータス バーの下にナビゲーション バーを正しく描画できないことです。drawrect全体を省略しても機能します(ただし、古いデバイスでは機能しません!
助言がありますか?