我在情节提要中将全局色调设置为蓝色,一切正常,但是当按下返回按钮时,导航图标或条形分段控件等某些项目变为灰色。这个问题只发生在 iOS7 中。
我知道这个问题很笼统,但我不知道代码的哪一部分导致了这个问题。希望有人遇到过类似的问题并可以分享他们的想法。
我认为 tintAdjustmentMode(UIView property) 导致了这个问题。尝试将窗口的 tintAdjustmentMode 设置为 UIViewTintAdjustmentModeNormal。
在您的代表中:
self.window.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
将这段代码添加到段中:
self.segmentedControl.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;
如果这可行,如果您在添加或删除视图时出现任何错误,您应该检查您的代码。我想问题在于您没有以正确的方式进行操作,因此它为 segmentedControl 设置了灰色,就像在显示弹出框或工作表时所做的那样。
我在当前的项目中遇到了同样的问题。好吧,既然你没有提供任何代码,我会尽力向你解释。确保在您想要的每个视图控制器中都设置了色调颜色。例如,我遇到了同样的错误,因为我在一个视图控制器中设置了色调颜色而在另一个视图控制器中忘记了它。因此,每当我转到未设置色调颜色的第二个视图控制器时,它会将整个内容设置为该颜色。所以当我回到原来的视图控制器时,它会改变第二个视图控制器的颜色。我希望这对你有意义,如果没有,请告诉我,我可以为你改写。
这是一个简单的问题。你面临着继承颜色的问题,在你的蓝色加载之后首先加载。你可以看到他们的属性颜色。默认颜色设置为灰色
您可以为任何这些子视图及其后代手动覆盖此属性。换句话说,如果每个视图自己的 tint color 为 nil,则每个视图都会继承其父视图的 tint color。如果视图层次结构中的最高级别视图的 tint color 值为 nil,则默认为系统蓝色。您在屏幕 1 和屏幕 2 中编写此代码。
self.view.tintColor = [UIColor redColor];
这对于外观代理来说可能是一个很好的案例。你可以这样做……</p>
[[UISegmentedControl appearance] setTintColor:[UIColor redColor]];
…默认情况下使每个实例都UISegmentedControl
具有相同的颜色。请记住,UIAppearance
样式是在运行时应用的。
在某些情况下,将 设置tintAdjustmentMode
为窗口或控制器view
是不够的,这肯定是因为层次结构中的某些视图会覆盖该值。然后你必须手动设置相关视图的色调模式。
如果您像我一样尝试尽可能多地使用 Interface Builder,则可以使用 Runtime Attributes:
该值1
来自模式的定义:
enum UIViewTintAdjustmentMode : Int {
case Automatic
case Normal
case Dimmed
}
其中,除非另有规定,否则案件的编号从 开始0
。