0

ViewControllernavigationBarPromtを使用していて、その上にカスタム画像を追加しました。

- (void)changeNavBar
{
    UIImage *image = [UIImage imageNamed: @"logo_home.png"];
    imageView = [[UIImageView alloc] initWithImage:image];
    imageView.contentMode = UIViewContentModeLeft;

    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"logo_home.png"] forBarMetrics:UIBarMetricsDefault];

    imageView.frame = CGRectMake(0, 0, 320, 70);

    [self.navigationController.navigationBar insertSubview:imageView atIndex:0];

    self.navigationController.navigationBar.backItem.backBarButtonItem.tintColor = [UIColor blackColor];
}

しかし、ユーザーが[メールを送信]ボタンをクリックするMFMailComposeViewControllerと、モーダルで作成して表示します。

- (IBAction)emailPressed:(id)sender
{
    NSString *emailTitle = event.title;
    NSString *messageBody = [NSString stringWithFormat:@"%@ - %@", event.title, event.concertUrl.absoluteString];

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];

    mc.mailComposeDelegate = self;
    NSLog(@"subviews: %d", mc.navigationBar.subviews.count);

    [mc setSubject:emailTitle];
    [mc setMessageBody:messageBody isHTML:NO];

    // Present mail view controller on screen
    [self presentModalViewController:mc animated:YES];
}

MFMailComposeViewControllerのナビゲーションバーはプロンプトなしで通常のnavigationBarに自動サイズ変更されますが、以前のVCのカスタムイメージは消えません。それを削除して、ナビゲーションバーに標準の黒スタイルを設定するにはどうすればよいですか?

4

1 に答える 1

2

UIAppearanceプロキシを使用して、アプリのすべてのナビゲーションバーに影響を与える背景画像を設定しました。

変化する

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"logo_home.png"] forBarMetrics:UIBarMetricsDefault];

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"logo_home.png"] forBarMetrics:UIBarMetricsDefault];
于 2012-11-30T14:52:14.663 に答える