首先先說(shuō)下tintColor和backgroundColor的區(qū)別
1.backgroundColor (背景顏色)
(1).默認(rèn)父視圖設(shè)置的背景顏色,如果子視圖的背景顏色也是default那么默認(rèn)透明的視圖都是父視圖的背景顏色
(2)背景顏色對(duì)于視圖上的帶有線條的內(nèi)容是無(wú)法改變的;比如字體顏色
2.tintColor
(1).tintColor是描述線條輪廓的一種顏色,該顏色默認(rèn)具有傳遞性,默認(rèn)狀態(tài)下最底部的視圖的tintcolor會(huì)一直往上面的視圖傳遞
(2).如果子視圖改變了tintcolor那么將會(huì)和父視圖的tintColor不一樣;傳遞鏈從此處斷開
(3).navagation的item的? tintColor和controller自帶的View不是在同一層次上;改變controller的view的tintColor對(duì)navagation的tintColor沒有顏色;
(4).由于,tintColor的特性,我們可以對(duì)鏤空的圖片(如tabbar的image和 BarButtonItem的image)進(jìn)行設(shè)置tintColor就可以設(shè)置改變鏤空?qǐng)D片的顏色
以上說(shuō)明了通過(guò)tintColor設(shè)置父視圖顏色就可以直接改變對(duì)應(yīng)的子視圖中線條和輪廓的顏色。
這里重點(diǎn)說(shuō)的是tintColor設(shè)置鏤空?qǐng)D片的顏色,說(shuō)明是鏤空?qǐng)D片呢?例如:下面圖片中返回,電話和購(gòu)物車圖片就屬于鏤空的圖片,我這里圓的黑背景是自己的view
這里可以通過(guò)設(shè)置tintColor直接吧電話和購(gòu)物車圖片設(shè)置成白色,其他界面有用到橘黃色的電話和購(gòu)物車圖片也很方便,這樣就不用麻煩美工妹子多切圖了,妹子瞬間對(duì)我崇拜起來(lái)了...!
大家應(yīng)該都知道圖片UIImage有個(gè)渲染模式
UIImageRenderingMode枚舉值來(lái)設(shè)置圖片的renderingMode屬性。該枚舉中包含下列值:
UIImageRenderingModeAutomatic? // 根據(jù)圖片的使用環(huán)境和所處的繪圖上下文自動(dòng)調(diào)整渲染模式。
UIImageRenderingModeAlwaysOriginal? // 始終繪制圖片原始狀態(tài),不使用Tint Color。
UIImageRenderingModeAlwaysTemplate? // 始終根據(jù)Tint Color繪制圖片,忽略圖片的顏色信息。
看完上面的相信應(yīng)該懂了,我現(xiàn)在設(shè)置圖片渲染模式為UIImageRenderingModeAlwaysTemplate,再設(shè)置按鈕的tintColor為白色,結(jié)果如圖:
完美!