1.首先得把界面转化成图片,给uiview加一个类目如下:

#import "UIView+Screen.h"

@implementation UIView (Screen)

//截取界面转化成图片

-(UIImage *)convertViewToImage

{

UIGraphicsBeginImageContext(self.bounds.size);

[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return image;

}

@end

2.得到截屏图片后进行模糊处理

给uiImage 添加一个类别方法

使用vImage API进行模糊

iOS5.0中新增了vImage API可以使用,它属于Accelerate.Framework,所以如果你要使用它要在工程中加入这个Framework。模糊算法使用的是vImageBoxConvolve_ARGB8888这个函数。

- (UIImage *)blurredImageWithRadius:(CGFloat)radius iterations:(NSUInteger)iterations tintColor:(UIColor *)tintColor

{

//image must be nonzero size

if (floorf(self.size.width) * floorf(self.size.height) <= 0.0f) return self;

//boxsize must be an odd integer

uint32_t boxSize = (uint32_t)(radius * self.scale);

if (boxSize % 2 == 0) boxSize ++;

//create image buffers

CGImageRef imageRef = self.CGImage;

vImage_Buffer buffer1, buffer2;

buffer1.width = buffer2.width = CGImageGetWidth(imageRef);

buffer1.height = buffer2.height = CGImageGetHeight(imageRef);

buffer1.rowBytes = buffer2.rowBytes = CGImageGetBytesPerRow(imageRef);

size_t bytes = buffer1.rowBytes * buffer1.height;

buffer1.data = malloc(bytes);

buffer2.data = malloc(bytes);

//create temp buffer

void *tempBuffer = malloc((size_t)vImageBoxConvolve_ARGB8888(&buffer1, &buffer2, NULL, 0, 0, boxSize, boxSize,

NULL, kvImageEdgeExtend + kvImageGetTempBufferSize));

//copy image data

CFDataRef dataSource = CGDataProviderCopyData(CGImageGetDataProvider(imageRef));

memcpy(buffer1.data, CFDataGetBytePtr(dataSource), bytes);

CFRelease(dataSource);

for (NSUInteger i = 0; i < iterations; i++)

{

//perform blur

vImageBoxConvolve_ARGB8888(&buffer1, &buffer2, tempBuffer, 0, 0, boxSize, boxSize, NULL, kvImageEdgeExtend);

//swap buffers

void *temp = buffer1.data;

buffer1.data = buffer2.data;

buffer2.data = temp;

}

//free buffers

free(buffer2.data);

free(tempBuffer);

//create image context from buffer

CGContextRef ctx = CGBitmapContextCreate(buffer1.data, buffer1.width, buffer1.height,

8, buffer1.rowBytes, CGImageGetColorSpace(imageRef),

CGImageGetBitmapInfo(imageRef));

//apply tint

if (tintColor && CGColorGetAlpha(tintColor.CGColor) > 0.0f)

{

CGContextSetFillColorWithColor(ctx, [tintColor colorWithAlphaComponent:0.25].CGColor);

CGContextSetBlendMode(ctx, kCGBlendModePlusLighter);

CGContextFillRect(ctx, CGRectMake(0, 0, buffer1.width, buffer1.height));

}

//create image from context

imageRef = CGBitmapContextCreateImage(ctx);

UIImage *image = [UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation];

CGImageRelease(imageRef);

CGContextRelease(ctx);

free(buffer1.data);

return image;

}

此时已经拥有了模糊的背景图片,下面就简单了。

方法二 就是用coreImage中苹果提供的滤镜效果,但是此方法效率低且需要转化时相对间比较长

//CPU渲染。。慢效率低,为了避免线程阻塞,最好放在子线程里。。

- (UIImage *)blur{

CIContext *context = [CIContext contextWithOptions:nil];

CIImage *imageToBlur = [[CIImage alloc]initWithImage:_imgview.image];

CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur" keysAndValues:kCIInputImageKey,imageToBlur ,nil];

_outputCIImage = [filter outputImage];

UIImage *img = [UIImage imageWithCGImage:[context createCGImage:_outputCIImage fromRect:_outputCIImage.extent]];

return img;

}

方法三就是用iOS8新出的功能。特别方便,还能支持实时模糊,缺点就是只能iOS8以上使用

//iOS8苹果自带的毛玻璃效果

- (IBAction)iOS8blurAction:(id)sender {

UIBlurEffect *beffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight];

UIVisualEffectView *view = [[UIVisualEffectView alloc]initWithEffect:beffect];

view.frame = self.bounds;

[self addSubview:view];

}

iOS背景模糊效果3中方法总结的更多相关文章

  1. iOS 图片背景模糊效果

    iOS 图片背景模糊效果 1.使用CoreImage中的模糊滤镜 原始效果图如下: CoreImage的实现: - (void)viewDidLoad { [super viewDidLoad]; / ...

  2. IOS修改webView背景透明以及IOS调用前台js的方法

    工作上遇到IOS的webView中的H5页面需要透明以显示webView的背景颜色.用H5自身的透明度的css样式或者js控制背景颜色及透明度都打不到想要的效果,最后还是通过ios设置webView中 ...

  3. iOS UITableViewCell点击时子视图背景透明的解决方法

    在做iOS项目的开发中,UITableView控件的应用十分广泛.在进行自定义UITableViewCell时,经常遇到这样的问题:在UITableViewCell上面添加了一个有背景颜色的子视图,当 ...

  4. iOS之在webView中引入本地html,image,js,css文件的方法 - sky//////////////////////////////////////ZZZZZZZZZZZZZZZ

    iOS之在webView中引入本地html,image,js,css文件的方法   2014-12-08 20:00:16CSDN-sky_2016-点击数:10292     项目需求 最近开发的项 ...

  5. 在IDEA中设置页面背景护眼色的方法

    在IDEA中设置页面背景护眼色的方法如下:

  6. iOS 如何自定义UISearchBar 中textField的高度

    iOS 如何自定义UISearchBar 中textField的高度 只需设置下边的方法就可以 [_searchBar setSearchFieldBackgroundImage:[UIImage i ...

  7. ios实现屏幕旋转的方法

    1.屏蔽AppDelegate下面的屏幕旋转方法 #pragma mark - 屏幕旋转的 //- (UIInterfaceOrientationMask)application:(UIApplica ...

  8. iOS 自定义控件开发(中)

    <iOS 自定义控件开发(上)> <iOS 自定义控件开发(中)> 接上篇iOS自定义控件开发之后,我们尝试另外一种. 在Xcode的右边,会看到如下的图 其中,上面有一个:C ...

  9. 李洪强iOS开发Swift篇—10_方法

    李洪强iOS开发Swift篇—10_方法 一.简单说明 跟其他面向对象语言一样,Swift中的方法可以分为2大类: (1)实例方法(Instance Methods) 在OC中,实例方法以减号(-)开 ...

随机推荐

  1. Cwinux源码解析(二)

    我在我的个人博客上发表了第二篇解析文章.欢迎各位读者批评指正. Cwinux源码解析(二)

  2. 高手详解SQL性能优化十条建议

    1.查询的模糊匹配  尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用. 解决办法: 其实只需要对该脚本略做改进,查询速度便 ...

  3. Hadoop入门进阶课程10--HBase介绍、安装与应用案例

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博主为石山园,博客地址为 http://www.cnblogs.com/shishanyuan  ...

  4. 初涉SQL Server性能问题(3/4):列出阻塞的会话

    在 初涉SQL Server性能问题(2/4)里,我们讨论了列出等待资源或正运行的会话脚本.这篇文章我们会看看如何列出包含具体信息的话阻塞会话清单. /************************ ...

  5. 订餐App回顾与总结

    MY-HR 成员: 角色分配 学号 博客园 丘惠敏 PM项目经理 201406114203 http://www.cnblogs.com/qiuhuimin/ 郭明茵 用户 201406114204 ...

  6. Scrum4.0+5.0 数独游戏

    1.题目: 1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作 ...

  7. 0506团队项目-Scrum 项目1.0

    题目 1.应用NABCD模型,分析你们初步选定的项目,充分说明你们选题的理由. 2.录制为演说视频,上传到视频网站,并把链接发到团队博客上. 团队项目选题 金融工具:复利计算与投资记录项目继续升级,开 ...

  8. Unity中简单使用Opengl

    简介 由于项目特殊需求,需要在unity中使用一些OpenGL的东西来绘制图形(PS:其实就是有一个拖尾算法只有OpenGL版本~~~懒得改了,直接在unity中使用OpenGL算了).所以琢磨咯下如 ...

  9. C#基础-css行内元素、块级元素基础

    一.行内元素与块级元素 块级元素列表 <address> 定义地址 <caption> 定义表格标题 <dd> 定义列表中定义条目 <div> 定义文档 ...

  10. 重新想象 Windows 8.1 Store Apps (78) - 控件增强: ScrollViewer, FlipView, Popup

    [源码下载] 重新想象 Windows 8.1 Store Apps (78) - 控件增强: ScrollViewer, FlipView, Popup 作者:webabcd 介绍重新想象 Wind ...