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