首页 > 代码库 > iOS7 毛玻璃效果
iOS7 毛玻璃效果
转自:http://prolove10.blog.163.com/blog/static/138411843201391401054305/
原图:
?效果图:
?实现:
首先需要导入Accelerate.framework。
然后把两个文件加入到自己的项目中即可。
UIImage+ImageEffects.h
#import @interfaceUIImage(ImageEffects) -(UIImage*)applyLightEffect; -(UIImage*)applyExtraLightEffect; -(UIImage*)applyDarkEffect; -(UIImage*)applyTintEffectWithColor:(UIColor*)tintColor; -(UIImage*)applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor*)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage*)maskImage; @end
UIImage+ImageEffects.m
#import "UIImage+ImageEffects.h" #import #import @implementationUIImage(ImageEffects) -(UIImage*)applyLightEffect { UIColor*tintColor =[UIColor colorWithWhite:1.0 alpha:0.3]; return[self applyBlurWithRadius:30 tintColor:tintColor saturationDeltaFactor:1.8 maskImage:nil]; } -(UIImage*)applyExtraLightEffect { UIColor*tintColor =[UIColor colorWithWhite:0.97 alpha:0.82]; return[self applyBlurWithRadius:20 tintColor:tintColor saturationDeltaFactor:1.8 maskImage:nil]; } -(UIImage*)applyDarkEffect { UIColor*tintColor =[UIColor colorWithWhite:0.11 alpha:0.73]; return[self applyBlurWithRadius:20 tintColor:tintColor saturationDeltaFactor:1.8 maskImage:nil]; } -(UIImage*)applyTintEffectWithColor:(UIColor*)tintColor { constCGFloatEffectColorAlpha=0.6; UIColor*effectColor = tintColor; int componentCount =CGColorGetNumberOfComponents(tintColor.CGColor); if(componentCount ==2){ CGFloat b; if([tintColor getWhite:&b alpha:NULL]){ effectColor =[UIColor colorWithWhite:b alpha:EffectColorAlpha]; } } else{ CGFloat r, g, b; if([tintColor getRed:&r green:&g blue:&b alpha:NULL]){ effectColor =[UIColor colorWithRed:r green:g blue:b alpha:EffectColorAlpha]; } } return[self applyBlurWithRadius:10 tintColor:effectColor saturationDeltaFactor:-1.0 maskImage:nil]; } -(UIImage*)applyBlurWithRadius:(CGFloat)blurRadius tintColor:(UIColor*)tintColor saturationDeltaFactor:(CGFloat)saturationDeltaFactor maskImage:(UIImage*)maskImage { // Check pre-conditions. if(self.size.width <1||self.size.height <1){ NSLog(@"*** error: invalid size: (%.2f x %.2f). Both dimensions must be >= 1: %@",self.size.width,self.size.height,self); returnnil; } if(!self.CGImage){ NSLog(@"*** error: image must be backed by a CGImage: %@",self); returnnil; } if(maskImage &&!maskImage.CGImage){ NSLog(@"*** error: maskImage must be backed by a CGImage: %@", maskImage); returnnil; } CGRect imageRect ={CGPointZero,self.size }; UIImage*effectImage =self; BOOL hasBlur = blurRadius > __FLT_EPSILON__; BOOL hasSaturationChange = fabs(saturationDeltaFactor -1.)> __FLT_EPSILON__; if(hasBlur || hasSaturationChange){ UIGraphicsBeginImageContextWithOptions(self.size, NO,[[UIScreen mainScreen] scale]); CGContextRef effectInContext =UIGraphicsGetCurrentContext(); CGContextScaleCTM(effectInContext,1.0,-1.0); CGContextTranslateCTM(effectInContext,0,-self.size.height); CGContextDrawImage(effectInContext, imageRect,self.CGImage); vImage_Buffer effectInBuffer; effectInBuffer.data =http://www.mamicode.com/CGBitmapContextGetData(effectInContext);>
调用:
UIImageView*me =[[UIImageView alloc] initWithFrame:CGRectMake(10,480,614,381)]; [me setImage:[[UIImage imageNamed:@"me.png"] applyBlurWithRadius:5 tintColor:[UIColor colorWithWhite:1 alpha:0.2] saturationDeltaFactor:1.8 maskImage:nil]]; [self.view addSubview:me];
ok!So easy!
iOS7 毛玻璃效果
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。