iOS端毛玻璃效果大致有以下四種方式
1.UIToolbar 7.0之前
2.UIBlurEffect 8.0開發的接口
3.CoreImage框架下CIFilter濾鏡來做
4. 通過Accelerate.framework框架計算RGB色滴值的方式
1.UIToolbar
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0,0,backview.frame.size.width,backview.frame.size.height)];
/*
UIBarStyleDefault 灰白色
UIBarStyleBlack 純黑色 不設置透明度看不見
UIBarStyleBlackOpaque 純黑色
UIBarStyleBlackTranslucent 純黑色
*/
toolbar.barStyle = UIBarStyleBlackTranslucent;
toolbar.alpha = 0.67;
[backview addSubview:toolbar];
無論是灰白還是純黑效果都不佳。
2.UIBlurEffect
UIBlurEffect *blureffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
UIVisualEffectView *effectview = [[UIVisualEffectView alloc]initWithEffect:blureffect];
effectview.frame = CGRectMake(0,0,backview.frame.size.width,backview.frame.size.height);
effectview.alpha = 0.7f;
[backview addSubview:effectview];
3.CoreImage
獲取上下文
CIContext *context = [CIContext contextWithOptions:nil];
//把uiimage轉換成CIImage
CIImage *ciImage = [CIImage imageWithCGImage:[UIImage imageNamed:@"timg-2.jpeg"].CGImage];
//濾鏡
/*
CIBoxBlur,**
** CIDiscBlur,**
** CIGaussianBlur,**
** CIMaskedVariableBlur,**
** CIMedianFilter,**
** CIMotionBlur,**
** CINoiseReduction,**
** CIZoomBlur**
*/
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
//設置輸入屬性InputImage
[filter setValue:ciImage forKey:kCIInputImageKey];
//設置模糊程度inputRadius
[filter setValue:@(5) forKey: @"inputRadius"];
//設置輸出屬性
CIImage *result = [filter valueForKey:kCIOutputImageKey];
//將加過濾鏡的圖片輸出
CGImageRef outImage = [context createCGImage: result fromRect:ciImage.extent];
//轉換成uiimage
UIImage * blurImage = [UIImage imageWithCGImage:outImage];
backview.image = blurImage;
//
CGImageRelease(outImage);
第四種方式
小馬哥的第三方庫MCBlur庫就是通過計算的方式
MCBlur
有興趣可以去看看