一直以來都是用xib或SB設置背景半透明,今天看了看用代碼設置半透明。
讓一個控件半透明媚值,通常我們第一個想到的方法就是調(diào)整控件的alpha值驶鹉。
對視圖直接設置alpha屬性的值會導致其子控件也變得半透明,而通常我們的需求是:背景半透明而其子控件不透明。
解決辦法:
1.用一張半透明的圖片做背景。
這個方法當然可以達到要求,但不建議使用
2.使用colorWithWhite:alpha:
方法
bgView.backgroundColor = [UIColor colorWithWhite:0.f alpha:0.5];
這也是我之前使用比較多的方法嘉赎,white后面的參數(shù)表示灰度,從0-1之間表示從黑到白的變化于樟,alpha就是你想調(diào)整的透明度公条。由于我做的半透明背景基色基本非黑即白,這個方法基本也夠用了迂曲。缺點就是不能設置其他顏色(彩色)的半透明
3.使用colorWithRed:green:blue:alpha:方法
這其實是我重點想說的方法靶橱。為什么呢?
相信大家平時用代碼給視圖著色的時候路捧,可能都用過類似
colorWithHexString:或colorWithHexColor:這樣的方法关霸,即:對UIColor類進行擴展,將16進制(如:#ffffff)的顏色字符串作為參入傳入杰扫,并返回該色值對應的UIColor類型的顏色
UIColor自帶的方法colorWithRed:green:blue:alpha:队寇,通過這種方法就可以達到讓背景成為任何顏色的半透明而且其子控件不透明。
- 在xib或者storyBoard里面對背景進行設置
如圖:
通過對背景顏色設置圖中的Opacity滑塊調(diào)整透明度章姓,同樣可以達到設置背景半透明而子控件不透明的目的佳遣。
5.使用colorWithAlphaComponent:方法
這是一個實例方法,一個UIColor的實例調(diào)用此方法后會返回一個帶透明度的UIColor.使用方法如下:
UIColor *color = [UIColor blackColor];
bgView.backgroundColor = [color colorWithAlphaComponent:0.5];
將返回值設置給底層的背景顏色,也可以保證子控件不透明.