typedef NS_ENUM(NSInteger, UIViewTintAdjustmentMode) { UIViewTintAdjustmentModeAutomatic,//视图的着色调整模式与父视图一致 UIViewTintAdjustmentModeNormal, // 视图的tintColor属性返回彻底未修改的视图着色颜色 UIViewTintAdjustmentModeDimmed,// 视图的tintColor属性返回一个去饱和度的、变暗的视图着色颜色 } NS_ENUM_AVAILABLE_IOS(7_0);
示例:html
下面这个图片中是我在故事板中拖得几个控件,其中有按钮,label,滑块,imageView,固然都尚未设置tintColor的post
当我把self.view的tintColor改成red时,效果图以下字体
如上,你们能够看见能够经过改一个tintColor属性能够改不少控件的颜色,当你想要在一款APP中把他全部的控件颜色都改了的话,就能够在APPDelegate里改变window的tintColor,我尝试打印默认的tintColor和tintAdjustmentMode,分别输出了[UIDeviceRGBColorSpace 0 0.478431 1 1]和1,这是在咱们没有对整个视图层次结构设置任何tint color相关的值的状况下的输出。能够看到,虽然咱们没有设置tintColor,但它仍然返回了系统的默认值;而 tintAdjustmentMode则默认返回Normal的原始值。url
NSLog(@"%@",self.view.tintColor); NSLog(@"%ld",self.view.tintAdjustmentMode); self.view.tintColor = [UIColor redColor];
可能有些同窗看到这儿纳闷了,不是说tintColor能够改变子视图的颜色吗?怎么上面的label和imageView的颜色怎么没改呢,这个问题呢,其实很简单,咱们能够经过重写tintColorDidChange这个方法来监测tintColor的变化,当self.View的tintColor颜色改变时,能够设置label字体的颜色。imageView的颜色没改的缘由是咱们没有设置图片的imageWithRenderingMode属性为AlwaysTemplatespa