昨天設計同窗問了個問題,iOS8下設計到底作了什麼新的元素,猛然想了一下,沒有想出什麼合適的介紹方法,從網上找找看,卻都是些「獨家首發」,「技術實現幻燈片」之類的水貨,全不對題,只好照着代碼實例,對照實現效果依樣把每種樣子胡亂給設計介紹了一通。git
事後想一想,應該怎麼通俗移動的介紹iOS8的毛玻璃效果呢?既然是毛玻璃,仍是從毛玻璃入手吧:)github
效果圖地址在最下。ide
Blur
iOS8帶來了應用可實現的毛玻璃效果,模糊效果有三種類型能夠選擇:
Extra Light Blur(極亮)
Light Blur (亮)
Dark Blur (暗)設計
想象三種效果實現置於同一張圖片之上,Light Blur看起來的效果最接近於咱們經過毛玻璃看和玻璃距離很近的物體,能夠看到不一樣顏色的邊界的,Extra Light Blur呢,更接近與經過毛玻璃看和玻璃距離遠的物體,也就是更多看到的是毛玻璃的那種白色,置於圖片呢,只能看到它的明暗邊界了。
Dark Blur其實和Extra效果類似,可是毛玻璃顏色是暗色的。圖片
UIVibrancyEffect
這個效果能夠這麼想象小時候玩的一個,在毛玻璃上蘸水,能夠是一部分地方變得更加透明。
這裏UIVibrancyEffect做用就是爲了實現這種相近的效果,注意,這也就表示UIVibrancyEffect是專門面向Blur的渲染效果。it
對應三種不一樣的Blur,效果不由相同。 Extra以及Light 自己實現的效果和那種毛玻璃蘸水是差很少的,Dark Blur自己不一樣,它的渲染效果是白色的。
注意:Light系->透明 Dark->白色ast
舉幾個簡單例子:
前置步驟
1.首先咱們建立好一個Blur View,這就有了基本的模糊效果。
2.緊接着咱們從Blur View上建立出對應的Vibrancy View。這裏注意,你設置不了Vibrancy的Frame,由於他是和對應的Blur緊密結合在一塊兒的,做用區域就是Blur的Frame區域。渲染
下面就是在Vibrancy上實現咱們的效果啦,它使用了Mask(遮罩)得概念來幫助咱們實現對應的效果。
1.加入Text,顏色深的文字部分會對應的變透明/白。
2.加入圖片,色深部分對應變透明/白。方法
拓展:基本的實現已經有了,那麼設計同窗是否滿意呢?
對應的三種Blur效果仍是透明度仍是不夠?
不要緊,能夠在Vibrancy 上給全區域計入遮罩,這樣子會所有透明起來:)(能夠看看效果圖的Status Bar部分的實現效果)技術
那麼幾個Mask疊壓效果有如何呢,看看效果圖吧,你一眼就能夠看出來。
對應的效果圖:https://github.com/ide/UIVisualEffects/tree/master/Screenshots