毛玻璃效果

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
有興趣可以去看看

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