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裡面對背景進行設定
[圖片上傳中。。。(1)]
通過對背景顏色設定圖中的opacity滑塊調整透明度。
5、使用colorWithAlphaComponent:方法
這是一個例項方法,一個UIColor的例項呼叫此方法後會返回一個帶透明度的UIColor.使用方法如下:
UIColor *color = [UIColor blackColor];
bgView.backgroundColor = [color colorWithAlphaComponent:0.5];
相關文章
- overflow:hidden,auto什麼區別
- CSS3中RGBA和opacity的區別CSSS3
- display: none與visibility: hidden的區別None
- display:none和visibility:hidden的區別None
- visibility:hidden與display:none的區別None
- rgba與opacity的區別以及在遮罩層的運用遮罩
- Application、Session、Cookie、ViewState、Cache、Hidden的區別 (總結)APPSessionCookieView
- CSS display:none和visible:hidden區別CSSNone
- opaqueOpaque
- rgba()和opacity這兩個的透明效果有什麼區別呢?
- animate()動畫的opacity: 'show'和opacity: 'hide'作用動畫IDE
- OPAQUE_TRANSFORM提示的產生OpaqueORM
- border opacity
- opacity騷操作
- CSS偽類的一些用法以及visibility:hidden和display:none的一些區別薦CSSNone
- jQuery :hiddenjQuery
- 用AutoML Vision alpha構建ML模型:識別不同型別的椅子TOML模型型別
- CSS opacity 透明度CSS
- opacity這個小東西
- jQuery opacity: 'toggle'作用jQuery
- fill-opacity 屬性
- 如何不使用 overflow: hidden 實現 overflow: hidden
- Oracle Hidden ParametersOracle
- Hidden Bipartite Graph
- rust-quiz:009-opaque-metavariable.rsRustUIOpaque
- OpenCV(Alpha通道)OpenCV
- Alpha1
- css34 CSS Opacity / TransparencyCSSS3
- HTML hidden屬性HTML
- ??與?:的區別
- 蜂蜜的區別
- 和 的區別
- as 和 with的區別
- ||和??的區別
- /*和/**的區別
- Kotlin 1.4的Dokaa Alpha版Kotlin
- alpha階段的 postmortem 報告
- HTML的input型別為hidden導致無法reset改欄位的value問題HTML型別