iOS实现模糊效果

作者: 一誠 | 来源:发表于2017-11-06 19:48 被阅读21次

Core Image

Core Image 是苹果用来简化图片处理的框架,Core Image 都提供了大量的滤镜(Filter),这也是 Core Image 库中比较核心的东西之一。按照官方文档记载,在 OS X 上有 120 多种 Filter,而在 iOS 上也有 90 多种。

创建高斯模糊效果的图片

- (UIImage *)filterImage:(UIImage *)image blurLevel:(CGFloat)blur {
    // 创建属性
    CIImage *ciImage = [[CIImage alloc] initWithImage:image];
    // 滤镜效果 高斯模糊
    CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
    [filter setValue:ciImage forKey:kCIInputImageKey];
    // 指定模糊值 默认为10, 范围为0-100
    [filter setValue:[NSNumber numberWithFloat:blur] forKey:@"inputRadius"];
    // 生成图片
    CIContext *context = [CIContext contextWithOptions:nil];
    // 创建输出
    CIImage *result = [filter valueForKey:kCIOutputImageKey];
    // 生成CGImageRef
    CGImageRef outImage = [context createCGImage: result fromRect:CGRectMake(0, 0, kScreenWidth * 0.8, kScreenHeight * 0.4)];
    UIImage * blurImage = [UIImage imageWithCGImage:outImage];
    
    return blurImage;
}

UIVisualEffectView

UIVisualEffect - UIBlurEffect和UIVibrancyEffect
UIBlurEffect对象用于将blur(毛玻璃)效果应用于UIVisualEffectView视图下面的内容。不过,这个对象的效果并不影响UIVisualEffectView对象的contentView中的内容。
UIVibrancyEffect主要用于放大和调整UIVisualEffectView视图下面的内容的颜色,同时让UIVisualEffectView的contentView中的内容看起来更加生动。

    // 创建UIBlurEffect
    UIBlurEffect * blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
    UIVisualEffectView * blurEffectView = [[UIVisualEffectView alloc]initWithEffect:blurEffect];
    blurEffectView.frame = CGRectMake(kScreenWidth * 0.25, 180, kScreenWidth * 0.5, 80);
    blurEffectView.layer.cornerRadius = 10.0f;
    blurEffectView.layer.masksToBounds = YES;
    [self.view addSubview:blurEffectView];
    // 创建UIVibrancyEffect
    UIVibrancyEffect * vibrancyEffect = [UIVibrancyEffect effectForBlurEffect:(UIBlurEffect *)blurEffectView.effect];
    UIVisualEffectView * vibrancyEffectView = [[UIVisualEffectView alloc]initWithEffect:vibrancyEffect];
    vibrancyEffectView.frame = blurEffectView.bounds;
    //使用自动布局的时候设置为NO
    //[vibrancyEffectView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [blurEffectView.contentView addSubview:vibrancyEffectView];
    // 创建UILabel
    UILabel * label = [[UILabel alloc]init];
    label.text = @"Hello World!";
    label.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:20.0];
    [label sizeToFit];
    label.center = vibrancyEffectView.center;
    label.textAlignment = NSTextAlignmentCenter;
    label.textColor = [UIColor whiteColor];
    [vibrancyEffectView.contentView addSubview:label];//透明效果
    //[blurEffectView.contentView addSubview:label];//白色效果

相关文章

  • iOS实现模糊效果

    Core Image Core Image 是苹果用来简化图片处理的框架,Core Image 都提供了大量的滤镜...

  • 高斯模糊

    高斯模糊 【iOS 开发】实现毛玻璃(高斯模糊)效果 - CocoaChina_让移动开发更简单

  • iOS 如何实现模糊效果

    写于2013-04-22 随着App Store的发展,越来越多的应用进入人们的视野,只是纯粹靠着功能强大来吃饭的...

  • iOS开发探索-高斯模糊&毛玻璃效果

    iOS开发中有的时候需要将图片设置模糊,来实现特定的效果获取更好的用户体验, iOS7之后半透明模糊效果得到大范围...

  • iOS开发使用半透明模糊效果方法整理

    本篇文章主要是对在iOS上做半透明模糊效果的开发实现做整理。 虽然iOS很早就支持使用模糊效果对图片等进行处理,但...

  • iOS的毛玻璃效果

    简要说明 毛玻璃(高斯模糊)效果是iOS开发中经常使用到的一个实现模糊效果的技能,实现这个效果有三种方法: 在iO...

  • iOS切换app预览模糊效果

    本篇文章介绍如何实现 iOS 切换 app 预览模糊的效果。 最终效果: 只需修改 AppDelegate.swi...

  • iOS 图片添加模糊效果

    iOS. 图片模糊效果的两种实现方法://1,vImage_Buffer 可以调整模糊度 pragma mark ...

  • iOS实现模糊效果的几种方法

    iOS7后,半透明模糊效果得到了广泛的使用,所以iOS开发过程中经常需要用到半透明模糊效果,本文对比列举几种实现半...

  • iOS开发使用半透明模糊效果方法整理

    iOS开发使用半透明模糊效果方法整理 iOS开发使用半透明模糊效果方法整理

网友评论

    本文标题:iOS实现模糊效果

    本文链接:https://www.haomeiwen.com/subject/fpwlmxtx.html