iOS UIVisualEffectView 为视图添加特殊毛玻璃的效果
苹果中的滤镜种类 很多,今天给大家介绍一款特殊滤镜效果的类--->UIVisualEffectView他是在iOS 8后,苹果开放了不少创建特效的接口,其中就包括创建毛玻璃(blur)的接口,在使用的时候创建UIVisualEffectView的一个对象这个对象提供了一种简单的方式来实现复杂的视觉效果。这个可以把这个对象看作是效果的一个容器,实际的效果会影响到该视图对象底下的内容,或者是添
苹果中的滤镜种类 很多,今天给大家介绍一款特殊滤镜效果的类--->UIVisualEffectView
他是在iOS 8后,苹果开放了不少创建特效的接口,其中就包括创建毛玻璃(blur)的接口,在使用的时候创建UIVisualEffectView的一个对象
这个对象提供了一种简单的方式来实现复杂的视觉效果。这个可以把这个对象看作是效果的一个容器,实际的效果会影响到该视图对象底下的内容,或者是添加到该视图对象的contentView中的内容。
具体的示例:
1.先建一个背景视图,可以滚动的 来显示效果
UIScrollView *scrollow = [[UIScrollView alloc]initWithFrame:self.view.frame];
scrollow.bounces = NO;
scrollow.contentSize = CGSizeMake(1080, 1920);
UIImageView *imageView =[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 1080, 1920)];
imageView.image = [UIImage imageNamed:@"image14.jpg"]
[scrollow addSubview:imageView];
[self.view addSubview:scrollow];
2.创建UIVisualEffectView对象并且添加到父视图上
UIVisualEffectView *effectView =[[UIVisualEffectView alloc]initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]];
//这里一定要设置frame 不然不会显示效果
effectView.frame = CGRectMake(0, 200, self.view.frame.size.width, 200);
[self.view addSubview:effectView];
尽量避免将UIVisualEffectView对象的alpha值设置为小于1.0的值,因为创建半透明的视图会导致系统在离屏渲染时去对UIVisualEffectView对象及所有的相关的子视图做混合操作。这不但消耗CPU/GPU,也可能会导致许多效果显示不正确或者根本不显示。
注意:这里添加的父视图不是滑动视图,而是self.view
3. 接下来 创建一个显示的label 在视图上
UILabel *label = [[UILabel alloc]initWithFrame:effectView.bounds];
label.text = @"乖妮";
label.textAlignment = NSTextAlignmentCenter;
label.font = [UIFont systemFontOfSize:80];
label.textColor = [UIColor blackColor];
[effectView.contentView addSubview:label];
写到这里,这时你运行以下 会有一个模糊的效果4. 或许这种效果还不是非常好看,接下来我们来创建模糊对象的子模糊对象 并添加到模糊上
//注意这里创建子模糊的方法 与上面创建 的模糊对象方法有一点不同
UIVisualEffectView *sub = [[UIVisualEffectView alloc]initWithEffect:[UIVibrancyEffect effectForBlurEffect:(UIBlurEffect *)effectView.effect]];
// 这里注意一定要给子模糊一个frame 这样才会有效果
sub.frame = effectView.bounds;
// 这里添加子模糊 是添加到 contentView上
[effectView.contentView addSubview:sub];
[sub.contentView addSubview:label];
运行的效果图
更多推荐
所有评论(0)