菜鸟教程小白 发表于 2022-12-12 21:13:57

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


                                            <p><p>我正在使用我的应用程序,该应用程序在点击 <code>navigationBarButton</code> 时从特定的 <code>UITableView</code> 调用 <code>MFMailComposeViewController</code>。 </p>

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

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

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

<pre><code>- (IBAction)savePDFAndEmail:(id)sender
{
    if ()
    {
      MFMailComposeViewController *mailer = [ init];
      mailer.mailComposeDelegate = self;
      ;

      NSString *emailBody = @&#34;Hello&#34;;
      ;
      mailer.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : };
      [ setTintColor:];

      [self presentViewController:mailer animated:YES completion:^{
            [ setStatusBarStyle:UIStatusBarStyleLightContent];
      }];
    }
}
</code></pre>

<p><strong>问题</strong></p>

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

<p>我想要的是 <code>UINavigationBar</code> 始终采用所选主题的 <code>UINavigationBar</code> 图像。 </p>

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

<pre><code>else if ()
{
    UIImage *navBackgroundImage = ;

    [ setBackgroundImage:navBackgroundImage forBarMetrics:UIBarMetricsDefault];
</code></pre>

<p>如何确保 <code>MFMailComposeViewController 的</code> <code>UINavigationBar</code> 图像保持所选主题的图像?</p>

<p>其他所有 View 都很好;就是这个。 </p>

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

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

<p>任何指导将不胜感激。 </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您的问题确实很长,但是答案很简单。 </p>

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

<p> <a href="https://stackoverflow.com/questions/20768736/mfmailcomposeviewcontroller-appearance-settintcolor-getting-lost-ios-7" rel="noreferrer noopener nofollow">Link 1</a> </p>

<p> <a href="https://stackoverflow.com/questions/11173693/changing-the-mfmailcomposeviewcontroller-navigationbar-title-font" rel="noreferrer noopener nofollow">Link 2</a> </p>

<p><strong>更新部分</strong></p>

<ul>
<li>这个想法是在任何 viewController 的 <code>viewWillAppear</code> 方法中控制 <code>UINavigationBar</code> 的外观。</li>
<li>这里是 <a href="https://s3-ap-southeast-1.amazonaws.com/problem-arc/mfMailComposer/MFMailComposer.mov" rel="noreferrer noopener nofollow">Video</a>这个。</li>
<li>这是屏幕截图。
<img src="/image/qkoqW.png" alt="enter image description here"/> </li>
<li>最后,如果你想要 sample<a href="https://s3-ap-southeast-1.amazonaws.com/problem-arc/mfMailComposer/mailComposer.zip" rel="noreferrer noopener nofollow">code</a> , 你可以检查一下。没有使用单例。您可以相应地对其进行修改。 </li>
</ul></p>
                                   
                                                <p style="font-size: 20px;">关于ios - MFMailComposeViewController 的 UINavigationBar 未始终显示正确的图像/颜色,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/22906749/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/22906749/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - MFMailComposeViewController 的 UINavigationBar 未始终显示正确的图像/颜色