介绍 iOS 中以下四种方式实现:
CoreImage
中的模糊滤镜UIImage + ImageEffects
的 category 模糊效果- iOS8 中
UIVisualEffectView
模糊效果 - iOS7 以后通过
UIToolBar
实现模糊效果
CoreImage
中的模糊滤镜实现
CoreImage
主要通过 CIFilter
这个类来实现。
这个类支持的滤镜多达 14 类,每个类又细分多款滤镜:
- CICategoryBlur
- CIBoxBlur
- CIDiscBlur
- CIGaussianBlur
- CIMaskedVariableBlur
- CIMedianFilter
- CIMotionBlur
- CINoiseReduction
- CIZoomBlur
- CICategoryColorAdjustment
- CIColorClamp
- CIColorControls
- CIColorMatrix
- CIColorPolynomial
- CIExposureAdjust
- CIGammaAdjust
- CIHueAdjust
- CILinearToSRGBToneCurve
- CISRGBToneCurveToLinear
- CITemperatureAndTint
- CIToneCurve
- CIVibrance
- CIWhitePointAdjust
- CICategoryColorEffect
- CICategoryCompositeOperation
- CICategoryDistortionEffect
- CICategoryGenerator
- CICategoryGeometryAdjustment
- CICategoryGradient
- CICategoryHalftoneEffect
- CICategoryReduction
- CICategorySharpen
- CICategoryStylize
- CICategoryTileEffect
- CICategoryTransition
我们这里使用的是高斯模糊,也就是 CIGaussianBlur
。
Sample Code:
1 |
|
此时 blurImage
图片就是经过滤镜处理后的图片,在放在 ImageView
上加载即可看到效果。
UIImage + ImageEffects
的 category 模糊效果
使用 Apple 开源的一个图片处理分类来实现,这个使用起来只需一行代码,简洁明了。
1 |
|
这里封装了一个区域模糊效果的方法
1 |
|
iOS8 中 UIVisualEffectView
模糊效果
这个效果只支持 iOS8.0 以上的版本,通过 UIVisualEffectView
来实现。
Sample Code:
1 |
|
😊Bonus:
实现 iOS 高版本通知中心炫酷的 Label 模糊效果。
1 |
|
效果图:
Demo 地址:
- BlurEffectDemo – 本文效果 Demo
- UIVisualEffects_Objective-c – 详细介绍
UIVisualEffects
的使用
iOS7 以后通过 UIToolBar
实现模糊效果
在 iOS7 以后, UINavigationBar
和 UIToolBar
自带毛玻璃模糊效果,可以通过手动创建 UIToolBar
对象,然后添加到 view 中实现,UIToolBar 区域就可以实现动态毛玻璃模糊效果。
例如在一个状态栏后方添加一个模糊 view,可以在控制器中这样实现,假设没有导航栏
1 | UIToolbar *statusBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 20)]; |
这个方法非常简单实用😊,快去试试吧。
参考资料: