父View半透明,子View不透明

2021-07-23 21:12:40 字數 1568 閱讀 9905

今天再封乙個confirm控制項的時候,出現了乙個小的bug,是這樣的:有乙個view,這個父view上增加了乙個view,父view的透明度我設定了alpha=0.6f,但是子view我沒有設定,理想狀況是父view你隨意透明,子view不受影響的應該,可是,情況不是這樣,子view也透明了,我看了文件中alpha的預設值為1啊,怎麼會這樣,後來這樣解決了問題:

[uicolor colorwithwhite:0.f alpha:0.5];

看網上人家說的:

這個方法當然可以達到要求,但是從程式設計初期前輩就教導我說在工程中盡量少加入資源,能不用的盡量不用(如純色背景之類的)

bgview.backgroundcolor = [uicolor colorwithwhite:0.f alpha:0.5];
這也是我之前使用比較多的方法,white後面的引數表示灰度,從0-1之間表示從黑到白的變化,alpha就是你想調整的透明度。由於我做的半透明背景基色基本非黑即白,這個方法基本也夠用了。缺點就是不能設定其他顏色(彩色)的半透明

這其實是我重點想說的方法。為什麼呢?

相信大家平時用**給檢視著色的時候,可能都用過類似

colorwithhexstring:colorwithhexcolor:這樣的方法,即:對uicolor類進行擴充套件,將16進製制(如:#ffffff)的顏色字串作為參入傳入,並返回該色值對應的uicolor型別的顏色

這一層的包裝使我們(起碼是我)對uicolor自帶的方法colorwithred:green:blue:alpha:既熟悉又陌生,熟悉是我們無數次呼叫這個擴充套件的方法來設定顏色,其本質都是在呼叫它,陌生可能是因為對它太過熟悉導致我幾乎忘記它還有乙個alpha引數可以讓我們設定半透明的背景色。而且通過這種方法就可以達到讓背景成為任何顏色的半透明而且其子控制項不透明

當我發現可以用這個方法設定背景半透明而子控制項不透明的時候,有點哭笑不得。那感覺就像是你突然發現你以為十分熟悉的室友竟然還有一項瞬間移動的技能。

所以我決定以後給我的uicolor擴充套件類增加乙個方法:

colorwithhexcolor:alpha:(怎麼新增邊笑邊流淚的表情...)

如圖:

半透明背景xib設定.png

通過對背景顏色設定圖中的opacity滑塊調整透明度,同樣可以達到設定背景半透明而子控制項不透明的目的。

在博友的提醒下,發現還有乙個方法,現在補充上來.

和前面說的幾個設定背景色的方法不太一樣的是,這是乙個例項方法,乙個uicolor的例項呼叫此方法後會返回乙個帶透明度的uicolor.使用方法如下:

uicolor *color = [uicolor blackcolor];

bgview.backgroundcolor = [color colorwithalphacomponent:0.5];

半透明 MFC實現父視窗不透明,子視窗半透明效果

cpp view plain copy onerasebkgnd cdc pdc 描述 根據msdn所述,子視窗的半透屬性是跟隨父視窗的。也就是說在子視窗中用setlayeredwindowattributes方法完成透明是不可行的。如果子視窗設定成overlap或者popup格式,雖然可用setl...

CSS實現父元素半透明,子元素不透明的問題

關於這個問題,其實是不熟悉opacity和rgba,下面解釋一波 顏色我們都知道有rgb,在rg個新的值,成b顏色模型增加了一為了rgba顏色模型。最後乙個是alpha通道的值,取值在0.0到1.0之間。兩者控制透明度的都是乙個小數,從0到1,0.0是完全透明,1是完全不透明。opacity屬性的值...

CSS實現父層透明,子層不透明

利用css中的opacity屬性可以實現一些視覺效果,但是父元素設定透明屬性會被子元素繼承,這是不想見到的,於是通過一些設定解決這個問題。filter alpha opacity 50 moz opacity 0.5 khtml opacity 0.5 opacity 0.5 解決辦法是利用css3...