• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - MFMailComposeViewController 的 UINavigationBar 未始终显示正确的图像/颜色

[复制链接]
菜鸟教程小白 发表于 2022-12-12 21:13:57 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用我的应用程序,该应用程序在点击 navigationBarButton 时从特定的 UITableView 调用 MFMailComposeViewController

因为我的应用程序中有主题(12 个选项),我首先认为让 MFMailComposeViewController 提供相同的主题会很好,我直接从代码创建它而不是来自 Storyboard。

在测试我的应用时,我注意到每次启动此 View 时 NavigationBar 图像都不会保持一致。在 Storyboard 中,我在右侧有两个导航栏项目,这是通过在该 View 中嵌入一个 UIToolbar 的 UIView 以及该 UIToolbar 中的两个导航栏按钮项目来实现的。这使我可以将两者放在一起。

考虑到这一点,我注意到了一种模式。如果我单击电子邮件图标,出现的 MFMailComposeViewController 有一个 NavigationBar,它采用适当的图像。如果我点击导航栏中的第二个图标(加号图标),然后再次点击电子邮件图标,UINavigationBar 是白色的,因此它不会加载图像。我已经放入 NSLogs 并且代码被适本地调用以设置 UINavigationBar,但这是模式;首先单击另一个 UINavigationBar Button 项,然后单击电子邮件,UINavigationBar 不显示 UIImage。 代码如下:

- (IBAction)savePDFAndEmailid)sender
{
    if ([MFMailComposeViewController canSendMail])
    {
        MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
        mailer.mailComposeDelegate = self;
        [mailer setSubject"An email"];

        NSString *emailBody = @"Hello";
        [mailer setMessageBody:emailBody isHTML:NO];
        mailer.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor]};
        [[mailer navigationBar] setTintColor:[UIColor whiteColor]];

        [self presentViewController:mailer animated:YES completion:^{
            [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
        }];
    }
}

问题

所以,重申一下这个问题:当我通过点击导航栏按钮在应用程序中选择并调用此 MFMailComposeViewController 时,如果我先点击电子邮件按钮,则会显示 UIImage,但如果我单击加号按钮,然后单击电子邮件,uinavigationbar 图像未显示在 MFMailComposeViewController 上。

我想要的是 UINavigationBar 始终采用所选主题的 UINavigationBar 图像。

AppDelegate 已经为选定的主题和 UINavigationBar 的 图像设置了代码,但这里似乎没有应用。这是一个小片段:

else if ([self.selectedTheme isEqualToString"Simplicity"])
{
    UIImage *navBackgroundImage = [UIImage imageNamed"GreenishNav.png"];

    [[UINavigationBar appearance] setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];

如何确保 MFMailComposeViewController 的 UINavigationBar 图像保持所选主题的图像?

其他所有 View 都很好;就是这个。

奇怪的是,在我的应用程序的其他地方,我使用完全相同的代码从 UITableViewCell 调用另一个 MFMailComposeViewController(只是更改主题等)并且每次都保留 UINavigationBar 的图像;它只是从这里使用 UINavigationBar 按钮,图像不会保留。

更新:我找到了一些重现此问题的步骤。在我有调用 MFMailComposerViewController 的 UINavigationBar 按钮的 View 中,我还有第二个 NavigationBar 项,它允许用户从这里添加一个条目。这是在 Storyboard 中创建的,其中嵌入了一个 UIView 和一个 UIToolbar 嵌入在该 View 中,以及该工具栏中的两个 NavigationBar 项(电子邮件和添加)。如果我单击邮件图标,它会与图像一致。但是,如果我点击导航栏中的加号按钮,取消它,然后单击电子邮件图标,当 MFMailComposer 出现时,它不会显示 UINavigationBar 图像。

任何指导将不胜感激。



Best Answer-推荐答案


您的问题确实很长,但是答案很简单。

请参阅这些有关更改 MFMailComposeViewController 的导航栏和色调的 Stack Over flow 帖子。你可以在你的情况下试试。但是您的问题不是重复的,所以我在这里指的是相关帖子。

Link 1

Link 2

更新部分

  • 这个想法是在任何 viewController 的 viewWillAppear 方法中控制 UINavigationBar 的外观。
  • 这里是 Video这个。
  • 这是屏幕截图。 enter image description here
  • 最后,如果你想要 sample code , 你可以检查一下。没有使用单例。您可以相应地对其进行修改。

关于ios - MFMailComposeViewController 的 UINavigationBar 未始终显示正确的图像/颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22906749/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap