0

現在、アプリ全体で UINavigationBar 背景画像をカスタマイズする次のコード ブロックを使用しています。

@implementation UINavigationBar(MyExtensions)

- (UIImage *)barBackground {
    return [UIImage imageNamed:@"GlobalTitleBackground.png"];
}

- (void)didMoveToSuperview {
    //iOS5 only
    if ([self respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
    {
        [self setBackgroundImage:[self barBackground] forBarMetrics:UIBarMetricsDefault];
    }
}

//this doesn't work on iOS5 but is needed for iOS4 and earlier
- (void)drawRect:(CGRect)rect {
    //draw image
    [[self barBackground] drawInRect:rect];
}

@end

一般に、これはうまく機能します。私が遭遇している問題は、MFMailComposeViewController を作成すると、背景もカスタマイズされることです。

したがって、私が現在持っているコードを考えると、MFMailComposeViewController によって作成された UINavigationBar を除くすべての UINavigationBars でカスタマイズを行うことは可能ですか?

前もって感謝します!

4

1 に答える 1

0

1 つの解決策は、view.tag プロパティを使用して特定のナビゲーション コントローラーを除外することです。

MFMailComposeViewController を作成して、ナビゲーション バーにタグを追加するとき。

例えば:

//In other VC
MFMailController *mailVC = [[MFMailController alloc] init];
mailVC.navigationBar.tag = 5678;

//In @implementation UINavigationBar(MyExtensions)
- (UIImage *)barBackground {
    if (self.tag != 5678)
        return [UIImage imageNamed:@"GlobalTitleBackground.png"];
    }
    return nil;
}
于 2012-07-27T22:07:51.200 に答える