国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS設置父view的透明度與子view的不一樣

2019-11-09 16:17:22
字體:
來源:轉載
供稿:網友

前言:

在開發中我們經常需要根據需求更改控件透明度,一般會采用修改view的alpha來實現,例如:

UIView *blackV = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HIGHT)]; blackV.backgroundColor = [UIColor blackColor]; blackV.alpha = 0.7;

這樣就修改了blackV的顏色為黑色、透明度為0.7。

但是有時候我們需要讓父控件有一定的透明度,而在父控件之上的子控件為不透明。這時如果我們只是單純將子控件加入父控件,就算設置子控件的alpha為1,子控件的透明度還是會跟父控件一致,例如下面:

self.view.backgroundColor = [UIColor blueColor];UIView *parentV = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 100, 100)];parentV.backgroundColor = [UIColor redColor];parentV.alpha = 0.7;[self.view addSubview: parentV];UIView *childV = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];childV.backgroundColor = [UIColor yellowColor];childV.alpha = 1;[parentV addSubview: childV];

顯示效果為:

這里寫圖片描述

可以看到黃色的子控件背面仍可看到藍色背景。

解決方案:

1、只設置黑白背景色 如果要求背景顏色只為黑白背景時可以采用如下方法:

[UIColor colorWithWhite:0.f alpha:0.7];

其中第一個參數是指定背景顏色,從0~1是由黑到白,第二個參數是指定透明度。

例如:

self.view.backgroundColor = [UIColor blueColor]; UIView *parentV = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 100, 100)]; parentV.backgroundColor = [UIColor colorWithWhite:0.f alpha:0.5]; [self.view addSubview: parentV]; UIView *childV = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; childV.backgroundColor = [UIColor yellowColor]; childV.alpha = 1; [parentV addSubview: childV];

顯示結果為:

這里寫圖片描述

可以看到父控件的背景色為黑色,透明度為0.5;子控件的黃色背景透明度為1,并沒有跟隨父控件的透明度變化。

2、設置任意顏色的背景色

上邊的方法只能設置單一背景顏色時的透明度,有時我們需要設置背景顏色為更多色彩,這時可以用下邊方法來實現:

[UIColor colorWithRed:122/255.0 green:123/255.0 blue:234/255.0 alpha:0.7]

與第一種方法類似,只不過將第一個顏色參數改為了rgb顏色,這樣就可以設置多種顏色了。 例如:

self.view.backgroundColor = [UIColor blueColor]; UIView *parentV = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 100, 100)]; parentV.backgroundColor = [UIColor colorWithRed:186/255.0 green:85/255.0 blue:211/255.0 alpha:0.7]; [self.view addSubview: parentV]; UIView *childV = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; childV.backgroundColor = [UIColor yellowColor]; childV.alpha = 1; [parentV addSubview: childV];

顯示結果為: 這里寫圖片描述

子控件的透明度為1,并沒有跟隨父控件的透明度變化。

3、采用 colorWithAlphaComponent

這一種方法也是本人比較常用的,使用起來也比較方便:

[[UIColor redColor] colorWithAlphaComponent:0.7];

這種方法可以任意指定父view的顏色,透明度。 例如:

UIView *parentV = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 100, 100)]; parentV.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.7]; [self.view addSubview: parentV]; UIView *childV = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; childV.backgroundColor = [UIColor yellowColor]; childV.alpha = 1; [parentV addSubview: childV];

顯示結果為: 這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 英山县| 齐河县| 多伦县| 公主岭市| 长岛县| 伊川县| 巩义市| 开原市| 尉氏县| 建平县| 三原县| 阿拉尔市| 舞钢市| 微山县| 安龙县| 布尔津县| 新绛县| 农安县| 屏东县| 禹州市| 抚顺市| 巫山县| 永春县| 杭锦旗| 岑巩县| 中阳县| 抚顺县| 韶关市| 永州市| 固原市| 苏尼特左旗| 平湖市| 青海省| 金华市| 榆社县| 布拖县| 扎兰屯市| 岑巩县| 轮台县| 洞口县| 乡宁县|