iOS 毛玻璃效果的实现方法
iOS開發中有的時候需要將圖片設置模糊,來實現特定的效果獲取更好的用戶體驗, iOS7之后半透明模糊效果得到大范圍使用的比較大,現在也可以看到很多應用局部用到了圖片模糊效果,可以通過高斯模糊和毛玻璃效果達到圖片模糊效果。
左邊玻璃右邊模糊高斯模糊效果
1.** CoreImage: **
iOS5.0之后就出現了Core Image的API,Core Image的API被放在CoreImage.framework庫中, 在iOS和OS X平臺上,Core Image都提供了大量的濾鏡(Filter),在OS X上有120多種Filter,而在iOS上也有90多。
2.** vImage **
vImage屬于Accelerate.Framework,需要導入 Accelerate下的 Accelerate頭文件, Accelerate主要是用來做數字信號處理、圖像處理相關的向量、矩陣運算的庫。圖像可以認為是由向量或者矩陣數據構成的,Accelerate里既然提供了高效的數學運算API,自然就能方便我們對圖像做各種各樣的處理 ,模糊算法使用的是vImageBoxConvolve_ARGB8888這個函數。
方法調用
UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(0, 300, SCREENWIDTH, 100)]; imageView.contentMode=UIViewContentModeScaleAspectFill; imageView.image=[UIImage boxblurImage:image withBlurNumber:0.5]; imageView.clipsToBounds=YES; [self.view addSubview:imageView];3.GPUImage
GPUImage是用設備的GPU來實時處理圖片,給圖片加各種濾鏡效果的一個開源庫。
可以實時地給照相機加上濾鏡效果,很多App都支持這種實時濾鏡。
鏈接地址:https://github.com/BradLarson/GPUImage
區別:
效果:第一種Core Image設置模糊之后會在周圍產生白邊,vImage使用不存在任何問題;
性能:圖像模糊處理屬于復雜的計算,大部分圖片模糊選擇的是vImage,性能最佳
項目地址: https://github.com/524429264/iOS-UIImageBoxBlur
參考資料:https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html#//apple_ref/doc/filter/ci/CIGaussianBlur
毛玻璃效果
iOS7.0
毛玻璃的樣式(枚舉)
UIBarStyleDefault = 0,
UIBarStyleBlack = 1,
UIBarStyleBlackOpaque = 1, // Deprecated. Use UIBarStyleBlack
UIBarStyleBlackTranslucent = 2, // Deprecated. Use UIBarStyleBlack and set the translucent property to YES
子類UIBlurEffect只有一個類方法,用來快速創建一個毛玻璃效果,參數是一個枚舉,用來設置毛玻璃的樣式,而UIVisualEffectView則多了兩個屬性和兩個構造方法,用來快速將創建的毛玻璃添加到這個UIVisualEffectView上.
特別注意: 這個類是iOS8.0之后才適用, 所以如果項目要兼容iOS7.0的話, 還是要考慮其它的兩種方法了.
** 實現代碼:**
同樣是先快速的實例化UIBlurEffect并設置毛玻璃的樣式,然后再通過UIVisualEffectView的構造方法將UIBlurEffect的實例添加上去, 最后設置frame或者是通過添加約束, 將effectView添加到要實現了毛玻璃的效果的view控件上,效果圖和上面的一樣.
iOS8.0毛玻璃的樣式(枚舉)UIBlurEffectStyleExtraLight,UIBlurEffectStyleLight,UIBlurEffectStyleDark>UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect]; effectView.frame = CGRectMake(0, 0, bgImgView.frame.size.width*0.5, bgImgView.frame.size.height); [bgImgView addSubview:effectView];項目地址:https://github.com/524429264/EffectViewDemo
轉載于:https://www.cnblogs.com/Free-Thinker/p/11347363.html
總結
以上是生活随笔為你收集整理的iOS 毛玻璃效果的实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【FJOI2015】最小覆盖双圆问题
- 下一篇: win10系统Mysql5.7服务启动报