1. 程式人生 > >iOS毛玻璃效果(不需要任何第三方了)

iOS毛玻璃效果(不需要任何第三方了)

分享兩種毛玻璃效果設定的方法,不需要任何三方東東,先看效果:

原圖:


方法一(iOS8系統方法):


方法二:


下面是示例程式碼:

  1. #import "ViewController.h"
  2. @interface ViewController ()  
  3. {  
  4.     UIImageView *_imageView;  
  5. }  
  6. @end
  7. @implementation ViewController  
  8. - (void)viewDidLoad {  
  9.     [super viewDidLoad];  
  10.     _imageView = [[UIImageView alloc]initWithFrame:self
    .view.bounds];  
  11.     _imageView.image = [UIImage imageNamed:@"1.jpg"];  
  12.     [self.view addSubview:_imageView];  
  13.     //方法一:系統方法,iOS8及以上可用
  14.     if (!UIAccessibilityIsReduceTransparencyEnabled()) {  
  15.         UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];  
  16.         UIVisualEffectView
     *blurEffectView = [[UIVisualEffectView alloc]initWithEffect:blurEffect];  
  17.         blurEffectView.frame = _imageView.bounds;  
  18.         [_imageView addSubview:blurEffectView];  
  19.     }  
  20.     //方法二:Core Image
  21.     UIImageView *blurImageView = [[UIImageView alloc]initWithFrame:_imageView.bounds];  
  22.     blurImageView.image
     = [self blur:[UIImage imageNamed:@"1.jpg"]];  
  23.     [_imageView addSubview:blurImageView];  
  24. }  
  25. //生成一張毛玻璃圖片
  26. - (UIImage*)blur:(UIImage*)theImage  
  27. {  
  28.     CIContext *context = [CIContext contextWithOptions:nil];  
  29.     CIImage *inputImage = [CIImage imageWithCGImage:theImage.CGImage];  
  30.     CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];  
  31.     [filter setValue:inputImage forKey:kCIInputImageKey];  
  32.     [filter setValue:[NSNumber numberWithFloat:15.0f] forKey:@"inputRadius"];  
  33.     CIImage *result = [filter valueForKey:kCIOutputImageKey];  
  34.     CGImageRef cgImage = [context createCGImage:result fromRect:[inputImage extent]];  
  35.     UIImage *returnImage = [UIImage imageWithCGImage:cgImage];  
  36.     CGImageRelease(cgImage);  
  37.     return returnImage;  
  38. }  
  39. - (void)didReceiveMemoryWarning {  
  40.     [super didReceiveMemoryWarning];  
  41.     // Dispose of any resources that can be recreated.
  42. }  
  43. @end

具體效果和引數自行研究吧!