001-iOS8新特性
一、毛玻璃效果
1.简介
在iOS8之后,苹果官方新出了一个类UIVisualEffectView,通过这个类,实现毛玻璃效果变得轻而易举,而且效率非常之高
2.UIVisualEffectView
1)相关联的几个类

2)代码实例
a.通过UIBlurEffect对象来初始化UIVisualEffectView -- 对整个背景进行虚化
1 #import "ViewController.h" 2 3 @interface ViewController () 4 5 @end 6 7 @implementation ViewController 8 9 - (void)viewDidLoad 10 { 11 [super viewDidLoad]; 12 13 [self setBackgroundImage]; // 背景图片设置 14 [self initUIVisualEffectView]; // 初始化UIVisualEffectView对象 15 } 16 17 #pragma mark - 背景图片设置 18 - (void)setBackgroundImage 19 { 20 UIImage *image = [UIImage imageNamed:@"yy"]; 21 UIGraphicsBeginImageContextWithOptions(self.view.frame.size, NO, 0.f); 22 [image drawInRect:self.view.bounds]; 23 UIImage *lastImage = UIGraphicsGetImageFromCurrentImageContext(); 24 UIGraphicsEndImageContext(); 25 self.view.backgroundColor = [UIColor colorWithPatternImage:lastImage]; 26 } 27 28 #pragma mark - 初始化UIVisualEffectView对象 29 - (void)initUIVisualEffectView 30 { 31 // 1.创建UIBlurEffect对象 32 // UIBlurEffectStyleExtraLight 高亮的风格 33 // UIBlurEffectStyleLight 亮化的风格 34 // UIBlurEffectStyleDark 暗化的风格 35 UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight]; 36 37 // 2.初始化UIVisualEffectView对象 38 UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect]; 39 visualEffectView.frame = CGRectMake(30, 30, self.view.frame.size.width - 30 * 2, 150); 40 visualEffectView.alpha = 0.6; // 设置虚化程度 41 visualEffectView.layer.cornerRadius = 10; // 设置圆角 42 visualEffectView.layer.masksToBounds = YES; // 裁剪图层超出部分 43 [self.view addSubview:visualEffectView]; 44 45 // 3.在UIVisualEffectView对象上创建一些控件 46 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, visualEffectView.bounds.size.width - 10 * 2, visualEffectView.bounds.size.height)]; 47 label.text = @"注意看字体的颜色--杨洋"; 48 label.font = [UIFont boldSystemFontOfSize:20]; 49 [visualEffectView addSubview:label]; 50 } 51 52 @end

b.通过UIVibarancyEffect对象来初始化UIVisualEffectView -- 对添加的标签控件进行背景虚化
1 #import "ViewController.h" 2 3 @interface ViewController () 4 5 @end 6 7 @implementation ViewController 8 9 - (void)viewDidLoad 10 { 11 [super viewDidLoad]; 12 13 [self setBackgroundImage]; // 背景图片设置 14 [self initUIVisualEffectView]; // 初始化UIVisualEffectView对象 15 } 16 17 #pragma mark - 背景图片设置 18 - (void)setBackgroundImage 19 { 20 UIImage *image = [UIImage imageNamed:@"yy"]; 21 UIGraphicsBeginImageContextWithOptions(self.view.frame.size, NO, 0.f); 22 [image drawInRect:self.view.bounds]; 23 UIImage *lastImage = UIGraphicsGetImageFromCurrentImageContext(); 24 UIGraphicsEndImageContext(); 25 self.view.backgroundColor = [UIColor colorWithPatternImage:lastImage]; 26 } 27 28 #pragma mark - 初始化UIVisualEffectView对象 29 - (void)initUIVisualEffectView 30 { 31 // 1.创建UIBlurEffect对象 32 // UIBlurEffectStyleExtraLight 高亮的风格 33 // UIBlurEffectStyleLight 亮化的风格 34 // UIBlurEffectStyleDark 暗化的风格 35 UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; 36 37 // 2.创建UIVibrancyEffect对象(作为一个子视图放在UIVisualEffectView上面,去连接UIBlurEffect,使其效果回去影响到添加到UIVisualEffectView的contentView中的内容) 38 UIVibrancyEffect *vibrancyEffect = [UIVibrancyEffect effectForBlurEffect:blurEffect]; 39 40 // 3.初始化UIVisualEffectView对象 41 UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:vibrancyEffect]; 42 visualEffectView.frame = CGRectMake(30, 30, self.view.frame.size.width - 30 * 2, 150); 43 visualEffectView.alpha = 0.6; // 设置虚化程度 44 visualEffectView.layer.cornerRadius = 10; // 设置圆角 45 visualEffectView.layer.masksToBounds = YES; // 裁剪图层超出部分 46 [self.view addSubview:visualEffectView]; 47 48 // 4.在UIVisualEffectView对象上创建一些控件 49 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, visualEffectView.bounds.size.width - 10 * 2, visualEffectView.bounds.size.height)]; 50 label.text = @"注意看字体的颜色--杨洋"; 51 label.font = [UIFont boldSystemFontOfSize:20]; 52 // 注意:这里必须加载在contentView上,否则无效 53 [visualEffectView.contentView addSubview:label]; 54 } 55 56 @end


浙公网安备 33010602011771号