iOS的毛玻璃效果

作者: Lewis海 | 来源:发表于2017-06-02 11:16 被阅读138次

    简要说明

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

    1. 在iOS 8之前是通过UIToolbar 方式实现,使用也是非常简单,几行代码搞定。
    2. iOS 8之后苹果新增了一个类 UIVisualEffectView,通过这个类来实现毛玻璃效果与上面的 UIToolbar 一样,而且效率也非常之高,使用也是非常简单,几行代码搞定。UIVisualEffectView 是一个抽象类,不能直接使用,需通过它下面的三个子类来实现(UIBlurEffect,UIVisualEffevt,UIVisualEffectView)。
    3. 国外大神通过对UIImageView 的分类进行封装好的第三方库** LBBlurredImage**来实现,大伙可以前往LBBlurredImage github地址看实现原理与源代码

    苹果推荐我们使用第二种方法。

    UIToolbar 方式实现

    /*
     毛玻璃的样式(枚举)
     UIBarStyleDefault          = 0,
     UIBarStyleBlack            = 1,
     UIBarStyleBlackOpaque      = 1, // Deprecated. Use UIBarStyleBlack
     UIBarStyleBlackTranslucent = 2, // Deprecated. Use UIBarStyleBlack and set the translucent property to YES
     */
    UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds];
    bgImgView.image = [UIImage imageNamed:@"huoying.jpg"];
    [self.view addSubview:bgImgView];
         
    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, bgImgView.frame.size.width, bgImgView.frame.size.height)];
    toolbar.barStyle = UIBarStyleBlackTranslucent;
    [bgImgView addSubview:toolbar];
    

    UIVisualEffectView实现

    /*
     毛玻璃的样式(枚举)
     UIBlurEffectStyleExtraLight,
     UIBlurEffectStyleLight,
     UIBlurEffectStyleDark
     */
    UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds];
    bgImgView.image = [UIImage imageNamed:@"huoying.jpg"];
    [self.view addSubview:bgImgView];
       
    UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
    UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect];
    effectView.frame = CGRectMake(0, 0, bgImgView.frame.size.width , bgImgView.frame.size.height);
    [bgImgView addSubview:effectView];
    

    第三方库LBBlurredImage

    // 对背景图片进行毛玻璃效果处理 参数blurRadius默认是20,可指定,最后一个参数block回调可以为nil
    UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds];
    [bgImgView setImageToBlur: [UIImage imageNamed:@"huoying.jpg"] blurRadius:20 completionBlock:nil];
    [self.view addSubview:bgImgView];
    

    毛玻璃效果图


    毛玻璃效果图毛玻璃效果图

    相关文章

      网友评论

        本文标题:iOS的毛玻璃效果

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