您的位置:首页 > 移动开发 > IOS开发

毛玻璃

2016-06-25 16:01 309 查看
从iOS7之后毛玻璃效果就被大量使用,最常见的就是导航栏的毛玻璃效果



下面我将介绍如何实现这种毛玻璃效果,并且把他们的性能进行一个对比

_imageView = [[UIImageView alloc]initWithFrame:self.view.bounds];
_imageView.backgroundColor = [UIColor brownColor];
_imageView.image = [UIImage imageNamed:@"abc.jpg"];
_imageView.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:_imageView];


方法一:在iOS7的时候系统为我们提供了一个工具来帮我们实现毛玻璃效果

//iOS7
NSLog(@"_____Begin");
UIToolbar *toolbar = [[UIToolbar alloc]initWithFrame:self.imageView.bounds];
toolbar.barStyle = UIBarStyleBlackTranslucent;
[_imageView addSubview:toolbar];
NSLog(@"_____End");


方法二:在iOS8的时候,系统专门有一个方法来实现毛玻璃效果

//iOS8以后
NSLog(@"_____Begin");
UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect];
effectView.frame = self.imageView.bounds;
[_imageView addSubview:effectView];
NSLog(@"_____End");


方法三:网上有大神写的毛玻璃的工具类,只需一行代码就可以实现毛玻璃的效果

但是这样比较消耗性能,因为他们的方法一般都是把每一个px计算出来然后在进行处理

//通用
NSLog(@"_____Begin");
_imageView.image = [UIImage boxblurImage:_imageView.image withBlurNumber:0.5];
NSLog(@"_____End");


下面来对比一下三个方法的性能差距

/*
ios8
2016-06-24 18:13:39.625 ImageVague[2930:193821] _____Begin
2016-06-24 18:13:39.627 ImageVague[2930:193821] _____End
内存消耗:18.4

ios7
2016-06-24 18:14:37.371 ImageVague[2943:194734] _____Begin
2016-06-24 18:14:37.373 ImageVague[2943:194734] _____End
内存消耗:18.4

通用
2016-06-24 18:17:00.658 ImageVague[2993:197383] _____Begin
2016-06-24 18:17:00.662 ImageVague[2993:197383] _____End
内存消耗:18.9
*/


从上面可以看出系统提供的方法在运行时间和内存消耗还是比较少的,所以推荐使用系统的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息