本文參考 http://blog.csdn.net/wzzvictory/article/details/10076323
1. alpha
液晶顯示器是由一個(gè)個(gè)的像素點(diǎn)組成的肢预,每個(gè)像素點(diǎn)都可以顯示一個(gè)由RGBA顏色空間組成的一種色值。其中的A就表示透明度alpha葬燎,UIView中alpha是一個(gè)浮點(diǎn)值误甚,取值范圍0~1.0,表示從完全透明到完全不透明。
當(dāng)把a(bǔ)lpha的值設(shè)置成0以后:
1谱净、當(dāng)前的UIView和subview都會被隱藏窑邦,而不管subview的alpha值為多少。
2壕探、當(dāng)前UIView會從響應(yīng)者鏈中移除冈钦,而響應(yīng)者鏈中的下一個(gè)會成為第一響應(yīng)者
alpha的默認(rèn)值是1.0。
另外李请,更改alpha值時(shí)瞧筛,默認(rèn)是有動(dòng)畫效果的,這是因?yàn)閳D層在Cocoa中是由Core Animation中CALayer表示的导盅,該動(dòng)畫效果是CALayer的隱含動(dòng)畫较幌。當(dāng)然也有辦法禁用此動(dòng)畫效果。
2. hidden
該屬性為BOOL值白翻,用來表示UIView是否隱藏乍炉,默認(rèn)值是NO。
當(dāng)值設(shè)為YES時(shí):
1滤馍、當(dāng)前的UIView和subview都會被隱藏岛琼,而不管subview的hidden值為多少。
2巢株、當(dāng)前UIView會從響應(yīng)者鏈中移除槐瑞,而響應(yīng)者鏈中的下一個(gè)會成為第一響應(yīng)者
總之,同alpha為0時(shí)的顯示效果相同阁苞。
3. opaque
該屬性為BOOL值困檩,UIView的默認(rèn)值是YES,但UIButton等子類的默認(rèn)值都是NO那槽。opaque表示當(dāng)前UIView是否不透明窗看,不過搞笑的是事實(shí)上它卻決定不了當(dāng)前UIView是不是不透明,比如你將opaque設(shè)為NO倦炒,該UIView照樣是可見的显沈。
因此GPU將不會做任何的計(jì)算合成,不需要考慮它下方的任何東西(因?yàn)槎急凰趽踝×?逢唤,而是簡單從這個(gè)層拷貝拉讯。這節(jié)省了GPU相當(dāng)大的工作量。由此看來鳖藕,opaque屬性的真實(shí)用處是給繪圖系統(tǒng)提供一個(gè)性能優(yōu)化開關(guān)魔慷!
按照前面的邏輯,當(dāng)opaque屬性被設(shè)為YES時(shí)著恩,GPU就不會再利用圖層顏色合成公式去合成真正的色值院尔。因此蜻展,如果opaque被設(shè)置成YES,而對應(yīng)UIView的alpha屬性不為1.0的時(shí)候邀摆,就會有不可預(yù)料的情況發(fā)生纵顾。
最后
當(dāng)把UIView的alpha屬性設(shè)成0,或者把hidden設(shè)成YES的時(shí)候栋盹,當(dāng)前UIView和它所包含的子UIView都會變成不可見施逾,同時(shí)也不會再響應(yīng)event事件。注意這里是或的關(guān)系例获,即只要設(shè)置了其中的一個(gè)都會有此效果汉额,而不管另外一個(gè)屬性的值是什么。