iOS7色调仅在呈现和解除另一个ViewController后才起作用

时间:2014-01-12 05:06:17

标签: uiviewcontroller ios7 tintcolor

我在iOS7中的色彩颜色有一个非常奇怪的问题。

当我第一次加载时出现问题的ViewController时,所有的色调都是浅灰色,好像一切都处于非活动状态,或者在UIAlertView后面使屏幕变暗。按钮仍处于活动状态,工作正常,但它们都是灰色的。 (我将色调颜色设置为橙色,稍微多了一点)。

这是奇怪的部分。如果我出现,然后立即关闭另一个ViewController,所有橙色色调都会出现,一切都按预期工作。这是我能够让色调出现的唯一方式 - 似乎没有其他工作。

我在整个应用程序中使用相同的基本代码模式,这个问题实际上只影响一个ViewController。这个特定的ViewController会显示UIModalPresentationFullScreenUIModalTransitionStyleCoverVertical,如果有的话。{/ p>

以下是我设置着色的方法:

首先,我在界面构建器中的每个视图控制器上设置了一种色调颜色,这些设置在工作和有问题的VC中都是相同的。

接下来,我在App Delegate中全局设置了一种色彩颜色,如下所示:

    [_window setTintColor:[UIColor orangeColor]];

以上两个对我的大多数ViewControllers都有效,但由于某种原因不适用于所有这些。对于那些没有工作的人,我一直在使用一些不同的技术来使色彩颜色起作用。例如:

self.view.tintColor = [UIColor orangeColor];

[_myUIBarButtonItem setTitleTextAttributes:
 [NSDictionary dictionaryWithObject:[UIColor orangeColor]
                             forKey:NSForegroundColorAttributeName]
                                           forState:UIControlStateNormal];

或强制进行tintColor更新:

[_myButtonOutlet setTitleColor:_cancelButtonOutlet.tintColor
                      forState:UIControlStateNormal];

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

在iOS7中,根据您的需要,您可以选择不同的色调行为。

您需要做的就是在app delegate中的didFinishLaunching中将窗口的tintAdjustmentMode属性调整为Normal。

self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;