真的奇怪的应用程序颜色行为?

Jos*_*osa 12 cocoa-touch objective-c ipad modalviewcontroller ios

在appDidFinishLaunchingWithOptions上,我使用以下代码将整个应用程序着色为红色.

self.window.tintColor = [UIColor otfRedColor];
Run Code Online (Sandbox Code Playgroud)

这非常有效,当我的应用加载时,所有导航栏项都是红色的.A是我的根视图控制器.

我有3个视图控制器,a,b和c.A拉出b的模态演示视图表,其中提取了c的完整模态视图.当C被拉起时,导航栏上的条形按钮项目都是灰色的,这不应该发生,因为在应用委托委托窗口后,我没有以任何方式改变任何色调或颜色.然后我用

[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

解雇VC c和b,但现在我的整个应用程序是灰色的.自应用代理以来,我根本没有使用任何色调代码,为什么会发生这种情况?当我再次从A到B时,导航栏项目仍然是红色的???

从A中提取视图控制器B的代码:

AthleteAdd *addAthlete = [self.storyboard instantiateViewControllerWithIdentifier:@"addAthlete"];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:addAthlete]; 
addAthlete.delegate = self;
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:navigationController animated:YES completion:nil]; 
Run Code Online (Sandbox Code Playgroud)

从B提取C的代码:

    MedicalReleaseVC *medRelease = [self.storyboard instantiateViewControllerWithIdentifier:@"showMedRel"];
    medRelease.delegate = self;
    [self presentViewController:medRelease animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样,或有想法?我尝试将第三个视图控制器着色为红色3个单独的方式,它仍然保持灰色,然后当一切都被解雇时,我的整个应用程序都是灰色的.请帮忙!!

编辑:

如果它有帮助,我解决这个问题的方法是在我的appdelegate.m中设置以下内容

 self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
Run Code Online (Sandbox Code Playgroud)

Leo*_*ica 10

我认为这是iOS7处理tintAdjustmentMode打开和关闭工作表和弹出窗口时的错误.我已经看到这个错误发生在Apple的本机邮件应用程序中,其中条形按钮项目变为灰色,或相反,一旦弹出窗口显示它们就不再变为灰色.

为了进一步调试,我建议继承你的一个视图(或直接窗口)并实现tintColorDidChange.记录tintAdjustmentMode那里的值.我担心这会导致你的灰色问题.

一种解决方案是强制UIViewTintAdjustmentModeNormal但是这会在打开弹出框或薄片时产生不变暗的效果.

  • 有人确认这是不是一个bug?我在最新的iOS版本(8.0.2)中仍然遇到这种情况. (3认同)
  • 我设置了self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal; 在我的应用程序委托中,修复了所有的灰色着色,不知何故我的模态视图仍然使背景变暗.不知道它为什么会起作用,但不会打好事! (2认同)