一纬纪、alpha
液晶顯示器是由一個個的像素點組成的,每個像素點都可以顯示一個由RGBA顏色空間組成的一種色值滑肉。其中的A就表示透明度alpha包各,UIView中alpha是一個浮點值,取值范圍0~1.0,表示從完全透明到完全不透明靶庙。
1问畅、alpha會影響自己的透明度,同時也會影響subView的透明度六荒。
2护姆、alpha設(shè)為空之后,UIView不會從響應(yīng)者鏈中移除掏击,仍然可以收到event卵皂。
3、更改alpha砚亭,默認(rèn)是有動畫效果的灯变,這是因為圖層在Cocoa中是由Core Animation中CALayer表示的豺旬,該動畫效果是CALayer的隱含動畫。當(dāng)然也有辦法禁用此動畫效果柒凉。
二、hidden
該屬性為BOOL值篓跛,用來表示UIView是否隱藏膝捞,默認(rèn)值是NO。
當(dāng)值設(shè)為YES時:
1愧沟、當(dāng)前的UIView和subview都會被隱藏蔬咬,而不管subview的hidden值為多少。
2沐寺、當(dāng)前UIView會從響應(yīng)者鏈中移除林艘,而響應(yīng)者鏈中的下一個會成為第一響應(yīng)者
三、alpha - hidden 比較
1混坞、對subView的影響: alpha會影響subView透明度狐援,hidden也會影響subView
2、隱藏UIView: alpha設(shè)置為0可以隱藏UIView究孕,hidden設(shè)置為YES也可以隱藏UIVIew啥酱,效果是一樣的,使用hidden性能較高厨诸。
四镶殷、opaque
該屬性為BOOL值,UIView的默認(rèn)值是YES微酬,但UIButton等子類的默認(rèn)值都是NO绘趋。opaque表示當(dāng)前UIView是否不透明,不過搞笑的是事實上它卻決定不了當(dāng)前UIView是不是不透明颗管,比如你將opaque設(shè)為NO陷遮,該UIView照樣是可見的。其作用在于:給繪圖系統(tǒng)提供一個性能優(yōu)化開關(guān)垦江。如果該值為YES拷呆,那么繪圖在繪制該視圖的時候把整個視圖當(dāng)做不透明對待。這樣疫粥,繪圖系統(tǒng)在執(zhí)行繪圖過程中會優(yōu)化一些操作并提供系統(tǒng)性能茬斧;如果是設(shè)置為NO,繪圖系統(tǒng)將其和其他內(nèi)容平等對待梗逮,不去做優(yōu)化操作项秉。為了性能方面的考量,默認(rèn)被置為YES(意味著優(yōu)化)慷彤。
1娄蔼、UIView當(dāng)有背景顏色時:并且背景顏色有透明度(透明度不為1時),將opaque設(shè)置為YES性能較高怖喻。
2、UIVIew有背景顏色時:并且背景顏色的透明度為1岁诉,opaque的值不影響性能锚沸。
3、UIVIew沒有背景顏色時:opaque的值不影響性能涕癣。
五哗蜈、opacity - CALayer的屬性
CALayer中opacity是一個浮點值,取值范圍0~1.0,表示從完全透明到完全不透明坠韩。
1距潘、opacity會影響自己的透明度,同時也會影響subLayer的透明度只搁。
2音比、opacity設(shè)為空之后,CALayer不會從響應(yīng)者鏈中移除氢惋,仍然可以收到event洞翩。
六、如何設(shè)置UIView透明焰望,subView不透明
1菱农、使用一張半透明的圖片做背景。
這個方法可以達(dá)到要求柿估,但是工程中應(yīng)該盡量少加入資源循未,能不用圖片的盡量不用圖片。
2秫舌、使用colorWithWhite:alpha:方法
view.backgroundColor = [UIColor colorWithWhite:0.f alpha:0.5];
這也是使用比較多的方法的妖,white后面的參數(shù)表示灰度,從0-1之間表示從黑到白的變化足陨,alpha就是想要調(diào)整的透明度嫂粟。
3、使用colorWithRed:green:blue:alpha:方法
設(shè)置alpha就是想要調(diào)整的透明度墨缘。
4星虹、在xib或者storyBoard里面對背景進(jìn)行設(shè)置
通過對背景顏色設(shè)置圖中的opacity滑塊調(diào)整透明度。
5镊讼、使用colorWithAlphaComponent:方法
這是一個實例方法,一個UIColor的實例調(diào)用此方法后會返回一個帶透明度的UIColor.使用方法如下:
UIColor *color = [UIColor blackColor];bgView.backgroundColor = [color colorWithAlphaComponent:0.5];