ios 7 模糊效果

原文:http://damir.me/ios7-blurring-techniques

有時候你會想要使ios7中得某些視圖產生模糊效果,那麼你該怎麼來實現呢?

靜態模糊(字面翻譯。。)

首先你要明白,這個技術是新的;以前版本的iOS中用到的這種類似的東西被性能所限制,你只能截圖當前的view來獲得一個image然後渲染模糊。

但是在iOS6中,你用renderInContext:方法來動態的獲取截圖花費的時間太長。

好消息是iOS7中,UIView類中包含了一個新的有同樣功能的方法:drawViewHierarchyInRect:afterScreenUpdates: ,它消耗的時間比renderInContext:少將近15倍。

現在我們改怎麼給截圖添加模糊效果呢?好吧,Apple已經給我們封裝了可以用的方法: https://developer.apple.com/downloads/  搜索sample code  ,在Sample Code from WWDC 2013中找到iOS_UIImageEffects.zip 下載,  再項目裏添加UIImage的UIImageEffects分類, 就會有多種模糊效果的類方法供你選擇

實時模糊:

我們怎麼實現像蘋果那樣用通知和control實現實時模糊呢?顯然,蘋果把這個接口給私有化啦。我們用不了啊。

聰明的小點子:

很多地方我們看起來是實時的,但實際上卻是靜態的,只不過用了一些小技巧而已

就像Andy Matuschak指出的:蘋果用一些技巧來完成或者說是假裝實時的完成了圖片模糊。這種做法通常發生在老設備上,但iPhone5上面看起來是實時的沒有作假

然而,讓我們把通知中心做個例子:我猜他提到的截屏並且模糊它的技巧是以通知中心爲翹板來完成的,然後把這個image作爲通知中心的背景(這一段不知道該怎麼翻譯),當用戶發送了這個通知之後,他們會增加這個背景圖的高度來假裝實時的模糊,這給用戶一個這是實時模糊的錯覺

UIToolbar

再者你可以用UIToolbar來替代你要模糊的UIView。把UIToolbar的barStyle屬性設置爲UIBarStyleBlack, 同時把translucent屬性設置爲YES,然後隨意的調整barTintColor。。。。你就完成啦。你會得到一個實時的半透明的模糊view.

這是不是一個簡潔的解決方法呢?當然不是,UIToolbar只能被用來作爲toolbar。但如果你僅僅想要獲得一個實時的模糊view,那麼你就不能拒絕這個方法,因爲,蘋果並不提供相關的api

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章