【问题标题】:REALLY strange app color behavior?真的很奇怪的应用程序颜色行为?
【发布时间】:2013-12-06 17:35:47
【问题描述】:

在 appDidFinishLaunchingWithOptions 上,我使用以下代码将整个应用程序染成红色。

self.window.tintColor = [UIColor otfRedColor];

这很好用,当我的应用加载时,所有导航栏项目都是红色的。 A 是我的根视图控制器。

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

[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

要关闭 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]; 

从 B 中提取 C 的代码:

    MedicalReleaseVC *medRelease = [self.storyboard instantiateViewControllerWithIdentifier:@"showMedRel"];
    medRelease.delegate = self;
    [self presentViewController:medRelease animated:YES completion:nil];

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

编辑:

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

 self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;

【问题讨论】:

    标签: ios objective-c ipad cocoa-touch modalviewcontroller


    【解决方案1】:

    我认为这是 iOS7 在打开和关闭工作表和弹出框时处理 tintAdjustmentMode 的错误。我在 Apple 的本地邮件应用程序中看到过这个错误,其中栏按钮项变为灰色,或者相反,一旦出现弹出框,它们就不再变为灰色。

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

    一种解决方案是强制UIViewTintAdjustmentModeNormal,但这会在打开弹出框或工作表时产生不暗淡的效果。

    【讨论】:

    • 你能举例说明 UIViewTintAdjustmentModeNormal 吗?
    • 我不确定 100%,因为我不必处理这样的问题,但我认为如果您在其中一个视图中将其设置为 UIViewTintAdjustmentModeNormal 而不是 UIViewTintAdjustmentModeAutomatic,它不会从正常到变暗。所以理论上你可以在窗口中做到这一点。
    • 我设置 self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;在我的应用程序委托中,修复了所有灰色着色,并且不知何故我的模态视图仍然使背景变暗。不知道为什么它会起作用,但不会打好东西!
    • @JosueEspinosa 很高兴听到。请务必通过 bug bugreport.apple.com 向 Apple 提交错误报告。
    • 有人确认这是否是一个错误吗?我仍然在最新的 iOS 版本 (8.0.2) 中遇到这种情况。
    【解决方案2】:

    我不得不放

    [[[UIApplication sharedApplication] keyWindow] setTintAdjustmentMode:UIViewTintAdjustmentModeNormal];
    

    在我的viewDidLoad 中解决这个问题。但是正如其他答案中提到的那样,它确实具有在弹出窗口时不使条形按钮项目变暗的不利影响。

    【讨论】:

      【解决方案3】:

      随便放

      self.view.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
      

      在您的 viewDidLoad 中,您的颜色恢复正常。

      【讨论】:

      • 我把它放在我的医疗发布课上,但是当它被解雇时一切都是灰色的。
      【解决方案4】:

      肯定有错误。我注意到,当弹出窗口出现时确实使窗口变暗,但是在我手动更改 keyWindow.tintAdjustmentMode 之后(对于自定义视图和模式视图控制器),即使我将 keyWindow.tintAdjustmentMode 设置回自动,弹出窗口也会停止变暗。

      【讨论】:

        【解决方案5】:

        显示弹出框时,主视图的TintAdjustmentMode 设置为Dimmed。当弹出窗口关闭时,这应该被反转,但是当您从弹出窗口导航到新屏幕时,由于某种原因它不会发生。

        我在显示为弹出框的 UIViewController 中修复了此问题 - 覆盖 ViewWillDisappear 方法并将主视图控制器视图上的 TintAdjustmentMode 设置回 Normal。 (在 Xamarin 中,我使用了 UIApplication.SharedApplication.KeyWindow.RootViewController.View.TintAdjustmentMode = UIViewTintAdjustmentMode.Normal 并在此过程中检查了一些空值。)

        【讨论】:

          【解决方案6】:

          另一个解决方案是不设置窗口 tintColor,而是在适当的地方使用外观代理,并在其他任何地方以编程方式(或在 Interface Builder 中)设置 tintColor。这似乎比设置全局窗口 tintColor 更安全,后者会引发奇怪的行为,尤其是在模式、系统警报和操作表关闭后。

          删除这个:

          self.window?.tintColor = UIColor.redColor()
          

          添加这些:

          UINavigationBar.appearance().barTintColor = UIColor.redColor()
          UINavigationBar.appearance().tintColor = UIColor.whiteColor()
          UISegmentedControl.appearance().tintColor = UIColor.orangeColor()
          

          【讨论】:

            【解决方案7】:

            我在外观代理级别设置了这个。

            UINavigationBar.appearance().tintAdjustmentMode = .normal
            

            【讨论】:

              猜你喜欢
              • 2012-08-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-02-02
              • 2014-01-07
              相关资源
              最近更新 更多