【使用UIVisualEffectView實現毛玻璃效果】


在iOS 8后,蘋果開放了不少創建特效的接口,其中就包括創建毛玻璃(blur)的接口。

通常要想創建一個特殊效果(如blur效果),可以創建一個UIVisualEffectView視圖對象,這個對象提供了一種簡單的方式來實現復雜的視覺效果。這個可以把這個對象看作是效果的一個容器,實際的效果會影響到該視圖對象底下的內容,或者是添加到該視圖對象的contentView中的內容。

 

舉例來看看如果使用UIVisualEffectView實現我們需要的效果:

 1 - (void)viewDidLoad {  2     
 3  [super viewDidLoad];  4     
 5     CGRect screenRect = [[UIScreen mainScreen] bounds];  6     
 7     //添加待模糊的圖片視圖
 8     UIImageView * imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image"]];  9  [imageView setFrame:screenRect]; 10  [self.view addSubview:imageView]; 11     
12     // 生成特定樣式的模糊效果
13     UIBlurEffect * blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; 14     
15     // 根據模糊效果生成模糊視圖
16     UIVisualEffectView * effectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; 17     
18     // 設定模糊區域大小
19  [effectView setFrame:screenRect]; 20     
21  [self.imageView addSubview:effectView]; 22 }

 

以上代碼中:

  1、我們首先添加一個全屏顯示的imageView,並給其實指定了顯示的圖像;

  2、調用類 UIBlurEffect 的靜態方法 effectWithStyle: 生成模糊樣式對象,其后面的枚舉型參數(參看下面代碼)決定了最終的模糊效果;

1 typedef NS_ENUM(NSInteger, UIBlurEffectStyle) { 2  UIBlurEffectStyleExtraLight, 3  UIBlurEffectStyleLight, 4  UIBlurEffectStyleDark 5 }

  3、根據模糊樣式對象生成 UIVisualEffectView 模糊視圖;

  4、指定模糊視圖的Frame;

  5、將模糊視圖作為子視圖添加到imageView上;

 

至此,實現了我們最終需要的效果,通過代碼不難看出,我們是生成了一張半透明的模糊視圖,其大小和需要模糊的imageView大小一樣,最后將其蓋在了imageView上面,實現了模糊效果;如果我們要實現局部模糊,那么只需調整UIVisualEffectView的Frame即可;

需要注意是的,不應該直接添加子視圖到UIVisualEffectView視圖中,而是應該添加到UIVisualEffectView對象的contentView中。

這里我們只單單通過UIVisualEffectView實現模糊這一功用,對於其它用法請自行查詢

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM