在呈现和解除视图控制器后,iOS 7.1上缺少标签栏背景

时间:2014-03-11 13:48:34

标签: ios uitabbar ios7.1

我在iOS 7.1上尝试了我的应用程序,我发现标签栏背景有时会消失。我能够追踪它们;它发生在:

  • 使用hidesBottomBarWhenPushed = YES
  • 推送放置在导航控制器内(位于标签栏控制器内部)的视图控制器
  • 呈现视图控制器然后解除它(即MFMailComposeViewController

我创建了一个示例应用程序(使用标签栏模板+添加按钮显示视图控制器,并使用mapView来判断标签是否消失),问题就在那里。

enter image description here

以下是我更改的示例应用的所有代码:

#import "FirstViewController.h"

@import MessageUI;

@interface FirstViewController () <MFMailComposeViewControllerDelegate>

@end

@implementation FirstViewController

- (IBAction)presentVCButtonPressed:(id)sender {
    if ([MFMailComposeViewController canSendMail]) {

        MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
        mailer.mailComposeDelegate = self;
        [mailer setSubject:@"Feedback for Routie"];
        [mailer setToRecipients:@[@"support@routieapp.com"]];
        [self presentViewController:mailer animated:YES completion:nil];
    }
}

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {
    [self dismissViewControllerAnimated:YES completion:nil];
}

@end

您可以在这里下载整个sample project

现在,重要的是:这似乎不会影响iPhone 5,也不会影响模拟器。问题出在iPhone 4和iPod Touch上(写这篇文章的最后一代)。

你们有没有同样的问题?你能解决它吗? 谢谢!

更新:我找到了解决方法。请参阅下面的答案。

2 个答案:

答案 0 :(得分:0)

已经有一段时间了,所以我会重新讨论这个问题。 iOS 7(在设备上)选项卡栏在设备上变得完全透明,但在模拟器上工作正常。似乎从已启用Back的详细信息页面点击hidesBottomBarWhenPushed后发生。

设置Tab Bar Controller&gt; Tab Bar&gt; Background中的White ColorStoryboard为我修复了它。此修复程序可保持半透明度。

出于某种原因,在tabBar.translucent中关闭ViewDidAppear然后再次切换不适合我。

在Swift中使用Xcode 6.3.1。

答案 1 :(得分:-1)

进入您的Main.storyboard并选择您的MKMapView以突出显示它(参见导航区域,您可以选择«Map View»)。然后仔细看看底部的“白色方块”:将它向上移动到底部吧! 在尺寸检查器中,您可以检查放置“锚点”的位置或查看此视图​​的原点(参见项目的左上角)。这解释了为什么iphone 5的屏幕高度更高。