我講到小概念恳守,喜歡用簡(jiǎn)明的語(yǔ)句描述清楚考婴。今天描述一下tintColor,喜歡讀長(zhǎng)篇大論的催烘,我在后面附了傳送門沥阱。
1.所有的常用控件,都有tintColor屬性伊群。其中考杉,UIView也有這個(gè)屬性,可想而知繼承UIView的控件也都有tintColor了舰始。
2.使用場(chǎng)景:當(dāng)父視圖更改了tintColor為red崇棠,那么它所有的一級(jí)子視圖tintColor全部為red,除非你主動(dòng)設(shè)置過(guò)子視圖的tintColor丸卷。它再往下的子視圖的tintColor則遵循直接父視圖的tintColor 枕稀。
3.如果沒(méi)有給任何視圖指定過(guò)tintColor,系統(tǒng)會(huì)默認(rèn)給原生控件指定一個(gè)tintColor谜嫉,比如UIButton的title和UIProgressView的progress都是淡藍(lán)色萎坷。
注意是原生控件,如果你的控件是自定義的沐兰,比如UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];這樣初始化來(lái)的哆档,系統(tǒng)就沒(méi)有為Button 的title顏色指定為默認(rèn)的藍(lán)色tintColor。
如果你要使用tintColor住闯,需要子類化它瓜浸,然后在- (void)tintColorDidChange里面寫上[self setTitleColor:self.tintColor forState:UIControlStateNormal],就OK了比原。
所以我猜想插佛,系統(tǒng)默認(rèn)將控件的某些顏色指定為tintColor的情況下,是因?yàn)橄到y(tǒng)控件的源碼里面有上面這句set...Color: self.tintColor 量窘。