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

 

posted @ 2017-11-16 09:48  Frank9098  阅读(123)  评论(0)    收藏  举报