本文是通過Ray網(wǎng)站的UIAppearance-tutorial學(xué)習(xí)后的知識(shí)點(diǎn)記錄,覺得在實(shí)際開發(fā)還是很有可能用到.
tintColor的使用
對(duì)指定視圖設(shè)置tintColor后,會(huì)自動(dòng)改變?cè)撘晥D的視圖層次上所有其子視圖tintColor.例如下面代碼:
UIApplication.sharedApplication().delegate?.window??.tintColor = theme.mainColor
改變根窗口的tintColor,作為其層次層次所有的子視圖的tintColor都會(huì)成為同一顏色
UIAppearance協(xié)議對(duì)象的使用
改變UIAppearance協(xié)議對(duì)象的屬性,就能改變所有其遵從該協(xié)議類的所有實(shí)例,iOS應(yīng)用的appearance只會(huì)對(duì)當(dāng)視圖加入到窗口時(shí)有效,對(duì)于已經(jīng)添加在窗口的視圖不起作用,需要通過移除其所在的視圖層次位置,再添加回來.
iOS對(duì)圖像的渲染模式
Original
: 使用圖像原有的色彩渲染
Template
: 忽略圖像原有的色彩,僅僅將圖像的圖形做樣本,使用tintColor的顏色來渲染圖形
Automatic
: 根據(jù)使用圖像的上下文環(huán)境,系統(tǒng)決定選用以上中的一種進(jìn)行圖形的色彩渲染,常常在應(yīng)用導(dǎo)航欄或工具欄的items上.
改變導(dǎo)航欄的返回item的圖片以及細(xì)節(jié)處理
必須設(shè)置backIndicatorImage, backIndicatorTransitionMaskImage指定圖片才能成功.
UINavigationBar.appearance().backIndicatorImage = UIImage(named: "backArrow")
UINavigationBar.appearance().backIndicatorTransitionMaskImage = UIImage(named: "backArrowMaskFixed")
iOS遮罩處理
被遮罩層只有通過遮罩層上的非透明像素可見, 其他區(qū)域只要在透明的像素下都不可見.
下圖紅色圖形作為遮罩層后,如果兩層有疊加,灰色圖形只會(huì)顯示遮罩層有紅色像素的區(qū)域
iOS中對(duì)圖片的裁剪和拉伸
tabIndicator.resizableImageWithCapInsets(UIEdgeInsets(top: 1.0, left: 2.0, bottom: 1.0, right: 2.0)
代碼中top,left,bottom,right 為目標(biāo)圖像四個(gè)方向裁剪線的邊界值,只有在裁剪線所圍成的區(qū)域才會(huì)被裁剪和平鋪,按左到有,上到下的順序進(jìn)行圖片大小調(diào)整.通常用避免圖片四端不變形,平鋪中間小塊區(qū)域才達(dá)到調(diào)整圖像大小的目的,官方推薦最好的性能的裁剪方式是平鋪區(qū)域只有1x1像素.