0

我正在使用 MFMailComposeViewController。我无法将导航栏背景图像添加到 ios7 上的 MFMailComposeViewController。我的代码在 ios7 之前工作。但在 ios7 上不起作用。如何将导航栏背景图像添加到 ios7 上的 MFMailComposeViewController?

    MFMailComposeViewController *mailCompose = [[MFMailComposeViewController alloc] init];
    mailCompose.mailComposeDelegate = self;
    [mailCompose setSubject:@"SubjectName"];
    [mailCompose setMessageBody:shareBodyString isHTML:NO];
    if ([self respondsToSelector:@selector(presentViewController:animated:completion:)])
    {
      [self presentViewController:mailCompose animated:YES completion:nil];
    } 
    else {
         [self presentModalViewController:mailCompose animated:YES];
    }

    [mailCompose.topViewController.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar-background.png"] forBarMetrics:UIBarMetricsDefault];  // working before ios7 
4

2 回答 2

0

如果您已经自定义了导航栏并且还希望它应用 MFMailComposeViewController,它只允许使用 UIAppearance 代理来实现。对于 iOS 7.1.1,我替换了导航栏背景,但无法更改状态栏背景。此外,它在后续调用中将条形按钮项显示为灰色。因此我停止自定义并尝试在创建 MFMailComposeViewController 之前返回默认导航栏样式

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
[[UINavigationBar appearance] setBarStyle:UIBarStyleDefault];
[[UINavigationBar appearance] setTintColor:nil];
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor blackColor],NSForegroundColorAttributeName,[UIFont fontWithName:@"Helvetica-Bold" size:18.0], NSFontAttributeName, nil]];

 MFMailComposeViewController *mailComposer =[[MFMailComposeViewController alloc] init];
于 2015-03-16T13:01:20.663 回答
0

使用外观代理。以下代码将针对整个应用程序:

UINavigationBar *navBar = [UINavigationBar appearance];
[navBar setBackgroundImage:[UIImage imageNamed:@"navigationbar-background.png"] forBarMetrics:UIBarMetricsDefault];

如果您更喜欢仅在 MFMailComposeViewController 中定位,则将第一行更改为:

navBar = [UINavigationBar appearanceWhenContainedIn:[MFMailComposeViewController class], nil];
于 2013-11-12T01:16:18.170 回答