iOS - 按下时色调颜色会发生变化

时间:2014-07-14 09:32:36

标签: ios ios7 colors tint

我在故事板中将全局色调颜色设置为蓝色,一切正常,但是当按下后退按钮时,某些项目(如导航图标或条形分段控件)会变为灰色。这个问题恰好发生在iOS7中。

我知道这个问题很普遍,但我不知道代码的哪一部分导致了这个问题。希望有人遇到类似的问题,并可以分享他们的想法。

非常感谢。

7 个答案:

答案 0 :(得分:5)

我认为tintAdjustmentMode(UIView属性)导致了这个问题。尝试将窗口的tintAdjustmentMode设置为UIViewTintAdjustmentModeNormal。

在你的代表中:

self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;

答案 1 :(得分:4)

将这段代码添加到细分中:

self.segmentedControl.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;    

如果这样可行,您应该检查代码,如果您在添加或删除视图时出错了。我想问题是你不能使它成为正确的方式,因为它为segmentedControl设置了一个灰色,就像当弹出窗口或表格一样。

答案 2 :(得分:1)

我当前的项目遇到了同样的问题。好吧,既然你没有提供任何代码,我会尽力向你解释。确保在您想要的每个视图控制器中设置色调颜色。例如,我遇到了同样的错误,因为我在一个视图控制器中设置了色调颜色而在另一个视图控制器中忘记了它。因此,每当我切换到未设置色调颜色的第二个视图控制器时,它会将整个事物设置为该颜色。所以当我返回原始视图控制器时,它会改变第二个视图控制器的颜色。我希望这对你有意义,如果不是,请告诉我,我可以为你改写。

答案 3 :(得分:0)

这是一个简单的问题。你正面临继承颜色的问题 在你的蓝色加载后首先加载。你可以看到它们的属性颜色。默认颜色设置为灰色

答案 4 :(得分:0)

这可能是appearance proxies的一个好例子。你可以做点什么......

[[UISegmentedControl appearance] setTintColor:[UIColor redColor]];

...默认情况下使UISegmentedControl的每个实例都具有相同的颜色。请记住,UIAppearance样式在运行时应用。

答案 5 :(得分:0)

您可以为任何这些子视图及其后代手动覆盖此属性。换句话说,如果每个视图的色调颜色为零,则会继承其superview的色调颜色。如果视图层次结构中的最高级别视图的色调颜色为零值,则默认为系统蓝色。您可以在屏幕1和屏幕2中编写此代码。

self.view.tintColor = [UIColor redColor];

答案 6 :(得分:0)

在某些情况下,将tintAdjustmentMode设置为窗口或控制器view是不够的,当然因为层次结构中的某些视图会覆盖该值。然后,您必须手动设置相关视图的色调模式。

如果你像我一样并尝试尽可能多地使用Interface Builder,你可以使用运行时属性:

enter image description here

1来自模式的定义:

enum UIViewTintAdjustmentMode : Int {

    case Automatic

    case Normal
    case Dimmed
}

除非另有规定,否则案例将从0开始分配编号。