ios開發之View屬性hidden, opaque, alpha, opacity的區別

一、alpha

液晶顯示器是由一個個的像素點組成的,每個像素點都可以顯示一個由RGBA顏色空間組成的一種色值。其中的A就表示透明度alpha,UIView中alpha是一個浮點值,取值范圍0~1.0,表示從完全透明到完全不透明。

1、alpha會影響自己的透明度,同時也會影響subView的透明度。

2、alpha設為空之后,UIView不會從響應者鏈中移除,仍然可以收到event。

3、更改alpha,默認是有動畫效果的,這是因為圖層在Cocoa中是由Core Animation中CALayer表示的,該動畫效果是CALayer的隱含動畫。當然也有辦法禁用此動畫效果。

二、hidden

該屬性為BOOL值,用來表示UIView是否隱藏,默認值是NO。

當值設為YES時:

1、當前的UIView和subview都會被隱藏,而不管subview的hidden值為多少。

2、當前UIView會從響應者鏈中移除,而響應者鏈中的下一個會成為第一響應者

三、alpha - hidden 比較

1、對subView的影響: alpha會影響subView透明度,hidden也會影響subView

2、隱藏UIView: alpha設置為0可以隱藏UIView,hidden設置為YES也可以隱藏UIVIew,效果是一樣的,使用hidden性能較高。

四、opaque

該屬性為BOOL值,UIView的默認值是YES,但UIButton等子類的默認值都是NO。opaque表示當前UIView是否不透明,不過搞笑的是事實上它卻決定不了當前UIView是不是不透明,比如你將opaque設為NO,該UIView照樣是可見的。其作用在于:給繪圖系統提供一個性能優化開關。如果該值為YES,那么繪圖在繪制該視圖的時候把整個視圖當做不透明對待。這樣,繪圖系統在執行繪圖過程中會優化一些操作并提供系統性能;如果是設置為NO,繪圖系統將其和其他內容平等對待,不去做優化操作。為了性能方面的考量,默認被置為YES(意味著優化)。

1、UIView當有背景顏色時:并且背景顏色有透明度(透明度不為1時),將opaque設置為YES性能較高。

2、UIVIew有背景顏色時:并且背景顏色的透明度為1,opaque的值不影響性能。

3、UIVIew沒有背景顏色時:opaque的值不影響性能。

五、opacity - CALayer的屬性

CALayer中opacity是一個浮點值,取值范圍0~1.0,表示從完全透明到完全不透明。

1、opacity會影響自己的透明度,同時也會影響subLayer的透明度。

2、opacity設為空之后,CALayer不會從響應者鏈中移除,仍然可以收到event。

六、如何設置UIView透明,subView不透明

1、使用一張半透明的圖片做背景。

這個方法可以達到要求,但是工程中應該盡量少加入資源,能不用圖片的盡量不用圖片。

2、使用colorWithWhite:alpha:方法

view.backgroundColor = [UIColor colorWithWhite:0.f alpha:0.5];

這也是使用比較多的方法,white后面的參數表示灰度,從0-1之間表示從黑到白的變化,alpha就是想要調整的透明度。

3、使用colorWithRed:green:blue:alpha:方法

設置alpha就是想要調整的透明度。

4、在xib或者storyBoard里面對背景進行設置

通過對背景顏色設置圖中的opacity滑塊調整透明度。

5、使用colorWithAlphaComponent:方法

這是一個實例方法,一個UIColor的實例調用此方法后會返回一個帶透明度的UIColor.使用方法如下:

UIColor*color = [UIColorblackColor];bgView.backgroundColor= [color colorWithAlphaComponent:0.5];

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容