4

iOS6 のカスタム レイアウトの場合、UINavigationBar のサブクラスを作成し、drawRect メソッドをオーバーライドしました。すべてのコントローラーがこの効果を持つ必要があるわけではないため、インターフェイス ビルダーでクラスを指定します。これが、カテゴリを使用できない理由でもあります。

しかし、iOS7 では、オーバーライドされた動作ではなく、デフォルトのナビゲーションバーを使用したいと考えています。以下のコードは機能しません。

-(void)drawRect:(CGRect)rect
{
    if([self isOS7]) {
       [super drawRect:rect];
    } 
    else {
        // custom drawing
    }
}

問題は、drawRect を実際に定義することによって、ios7 がステータス バーの下にナビゲーション バーを正しく描画できないことです。drawrect全体を省略しても機能します(ただし、古いデバイスでは機能しません!

助言がありますか?

4

1 に答える 1

1

新しいUIViewをサブビューとして追加し、代わりにdraw rectでそこで処理を行うと、解決できます。

UITableViewCell drawInRect iOS7

于 2013-10-09T07:09:01.283 に答える