呈现和关闭视图控制器后,iOS 7.1上的选项卡栏背景丢失

卢卡斯·彼得(Lukas Petr)

我在iOS 7.1上尝试了我的应用程序,但发现标签栏背景在某些情况下会消失。我能够找到他们。它发生在以下情况:

  • 推入放置在导航控制器(即标签栏控制器内部)中的视图控制器 hidesBottomBarWhenPushed = YES
  • 展示一个视图控制器,然后关闭它(即MFMailComposeViewController

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

在此处输入图片说明

这是我更改的示例应用程序的所有代码:

#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:@[@"[email protected]"]];
        [self presentViewController:mailer animated:YES completion:nil];
    }
}

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

@end

在这里,您可以下载整个示例项目

现在,重要的是:这似乎不会影响iPhone 5或模拟器。问题出在iPhone 4和iPod Touch(撰写本文时为上一代产品)上。

你们中有人有同样的问题吗?您能修复它吗?谢谢!

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

卢卡斯·彼得(Lukas Petr)

找到修复程序!

因此,经过一番调查(和头痛),我发现有一个简单的解决方法。只需切换translucent属性,如下所示:

tabBar.translucent = NO;
tabBar.translucent = YES;


现在,何时执行此操作,每种情况在几个位置上都有:

1)用推动viewControllerhidesBottomBarWhenPushed = YES
弹出动画结束后,栏背景立即消失,因此将修复程序添加到viewDidAppear:呈现它的viewController方法中:

- (void)viewDidAppear:(BOOL)animated {
    self.navigationController.tabBarController.tabBar.translucent = NO;
    self.navigationController.tabBarController.tabBar.translucent = YES;
    ...
}


2)呈现一个视图控制器,然后将其关闭:
在这种情况下,在关闭动画期间选项卡栏背景已经消失了。您可以在单独显示的每个viewController中执行此操作,或者,如果您已经继承了子类UITabBarController(如我的子类),则可以将其添加到其viewWillAppear方法中。请注意,立即致电修复程序无济于事(我已经尝试过);这就是为什么我使用dispatch_after GCD函数的原因:

- (void)viewWillAppear:(BOOL)animated {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        self.tabBar.translucent = NO;
        self.tabBar.translucent = YES;
    });
    ...
}


我知道这不是最干净的方法,但这显然是苹果方面的错误,而且可能会在我们身边待一段时间(我认为不会有任何iOS 7.2,因此我们很可能会坚持使用直到iOS 8发布)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

呈现和关闭视图控制器后,iOS 7.1上的选项卡栏背景丢失

来自分类Dev

选项卡栏控制器将不显示选项卡Xcode 7

来自分类Dev

呈现的视图控制器涵盖了iOS 7中的状态栏

来自分类Dev

使用Storyboard ios7在选项卡栏控制器中设置所选图像

来自分类Dev

使用Storyboard ios7在选项卡栏控制器中设置选定的图像

来自分类Dev

ios7呈现视图控制器在呈现时不会旋转,导致状态栏消失

来自分类Dev

iOS 7上的选项卡栏是否有其他颜色?

来自分类Dev

IOS7的幻灯片视图控制器菜单和状态栏问题

来自分类Dev

具有导航栏和视图控制器的自动布局(iOS 7)

来自分类Dev

iOS7-iPhone呈现视图控制器-UIPickerView

来自分类Dev

iPad / iOS7:从中呈现“全屏”视图控制器后,“页面”模式视图控制器出现奇怪行为

来自分类Dev

iOS8 iOS7和iOS6防止旋转呈现的视图控制器

来自分类Dev

在选项卡栏控制器之前显示视图

来自分类Dev

在选项卡栏控制器之前显示视图

来自分类Dev

从导航栏视图控制器导航到选项卡栏视图控制器

来自分类Dev

从导航栏视图控制器导航到选项卡栏视图控制器

来自分类Dev

iOS-关闭视图控制器后,标签栏变为透明

来自分类Dev

模态视图控制器可在iOS 7上运行,在iOS 6上有差距

来自分类Dev

模态视图控制器可在iOS 7上运行,在iOS 6上有差距

来自分类Dev

SWRevealViewController和选项卡栏控制器

来自分类Dev

SWRevealViewController和选项卡栏控制器

来自分类Dev

更改选项卡栏项目颜色iOS7?

来自分类Dev

选项卡栏控制器未显示更新Xcode后的选项卡按钮

来自分类Dev

组合选项卡栏,导航和表视图控制器

来自分类Dev

组合选项卡栏,导航和表视图控制器

来自分类Dev

ios 7中显示模型视图控制器时出现状态栏问题

来自分类Dev

透明/模糊导航栏的iOS 7视图控制器布局问题

来自分类Dev

iOS 7及更高版本:为每个视图控制器设置状态栏样式

来自分类Dev

iOS 6中的iOS隐藏选项卡栏会创建黑色栏(iOS 6的修复会破坏iOS 7!)

Related 相关文章

  1. 1

    呈现和关闭视图控制器后,iOS 7.1上的选项卡栏背景丢失

  2. 2

    选项卡栏控制器将不显示选项卡Xcode 7

  3. 3

    呈现的视图控制器涵盖了iOS 7中的状态栏

  4. 4

    使用Storyboard ios7在选项卡栏控制器中设置所选图像

  5. 5

    使用Storyboard ios7在选项卡栏控制器中设置选定的图像

  6. 6

    ios7呈现视图控制器在呈现时不会旋转,导致状态栏消失

  7. 7

    iOS 7上的选项卡栏是否有其他颜色?

  8. 8

    IOS7的幻灯片视图控制器菜单和状态栏问题

  9. 9

    具有导航栏和视图控制器的自动布局(iOS 7)

  10. 10

    iOS7-iPhone呈现视图控制器-UIPickerView

  11. 11

    iPad / iOS7:从中呈现“全屏”视图控制器后,“页面”模式视图控制器出现奇怪行为

  12. 12

    iOS8 iOS7和iOS6防止旋转呈现的视图控制器

  13. 13

    在选项卡栏控制器之前显示视图

  14. 14

    在选项卡栏控制器之前显示视图

  15. 15

    从导航栏视图控制器导航到选项卡栏视图控制器

  16. 16

    从导航栏视图控制器导航到选项卡栏视图控制器

  17. 17

    iOS-关闭视图控制器后,标签栏变为透明

  18. 18

    模态视图控制器可在iOS 7上运行,在iOS 6上有差距

  19. 19

    模态视图控制器可在iOS 7上运行,在iOS 6上有差距

  20. 20

    SWRevealViewController和选项卡栏控制器

  21. 21

    SWRevealViewController和选项卡栏控制器

  22. 22

    更改选项卡栏项目颜色iOS7?

  23. 23

    选项卡栏控制器未显示更新Xcode后的选项卡按钮

  24. 24

    组合选项卡栏,导航和表视图控制器

  25. 25

    组合选项卡栏,导航和表视图控制器

  26. 26

    ios 7中显示模型视图控制器时出现状态栏问题

  27. 27

    透明/模糊导航栏的iOS 7视图控制器布局问题

  28. 28

    iOS 7及更高版本:为每个视图控制器设置状态栏样式

  29. 29

    iOS 6中的iOS隐藏选项卡栏会创建黑色栏(iOS 6的修复会破坏iOS 7!)

热门标签

归档