詳解tintColor屬性,詳解tintcolor

來源:互聯網
上載者:User

詳解tintColor屬性,詳解tintcolor
tintColor屬性是iOS7之後新加的一個屬性,這個屬性定義了一個非預設的著色顏色值,其值的設定會影響到以視圖為根視圖的整個視圖階層。它主要是改變控制項的顏色,以擷取一些有意思的視覺效果。

  • tintColor屬性-  預設情況下,tintColor屬性是預設為nil的,當我們設定一個視圖的tintColor屬性時,他會自動傳播到他的子視圖的,因此,要設定一個控制項的顏色,即就要設定他的父視圖的tintColor,當你沒有設定tintColor時,系統預設為藍色。
  • 與tintColor屬性相關的還有個tintAdjustmentMode屬性,它是一個枚舉值,定義了tint color的調整模式。
typedef NS_ENUM(NSInteger, UIViewTintAdjustmentMode) {        UIViewTintAdjustmentModeAutomatic,//視圖的著色調整模式與父視圖一致                UIViewTintAdjustmentModeNormal, // 視圖的tintColor屬性返回完全未修改的視圖著色顏色        UIViewTintAdjustmentModeDimmed,// 視圖的tintColor屬性返回一個去飽和度的、變暗的視圖著色顏色    } NS_ENUM_AVAILABLE_IOS(7_0);
  • tintColorDidChange方法-  這個方法會在視圖的tintColor或tintAdjustmentMode屬性改變時自動調用。另外,如果當前視圖的父視圖的tintColor或tintAdjustmentMode屬性改變時,也會調用這個方法。我們可以在這個方法中根據需要去重新整理我們的視圖。

樣本:

下面這個圖片中是我在故事板中拖得幾個控制項,其中有按鈕,label,滑塊,imageView,當然都還沒有設定tintColor的

當我把self.view的tintColor改為red時,如下

 

如上,大家可以看見可以通過改一個tintColor屬性可以改很多控制項的顏色,當你想要在一款APP中把他所有的控制項顏色都改了的話,就可以在APPDelegate裡改變window的tintColor,我嘗試列印預設的tintColor和tintAdjustmentMode,分別輸出了[UIDeviceRGBColorSpace 0 0.478431 1 1]和1,這是在我們沒有對整個視圖階層設定任何tint color相關的值的情況下的輸出。可以看到,雖然我們沒有設定tintColor,但它仍然返回了系統的預設值;而 tintAdjustmentMode則預設返回Normal的原始值。

    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屬性為AlwaysTemplate

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.