方式一:UIToolBar实现毛玻璃特效
在iOS7.0(包括)之前还是有系统的类可以实现毛玻璃效果的, 就是 UIToolbar这个类,并且使用相当简单,几行代码就可以搞定.
1 /* 2 毛玻璃的样式(枚举) 3 UIBarStyleDefault = 0, 4 UIBarStyleBlack = 1, 5 UIBarStyleBlackOpaque = 1, // Deprecated. Use UIBarStyleBlack 6 UIBarStyleBlackTranslucent = 2, // Deprecated. Use UIBarStyleBlack and set the translucent property to YES 7 */ 8 UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds]; 9 bgImgView.image = [UIImage imageNamed:@"huoying4.jpg"]; 10 [self.view addSubview:bgImgView]; 11 12 UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, bgImgView.frame.size.width*0.5, bgImgView.frame.size.height)]; 13 toolbar.barStyle = UIBarStyleBlackTranslucent; 14 [bgImgView addSubview:toolbar];
方式二:UIBlurEffect实现毛玻璃特效
在iOS8.0之后,苹果新增了一个类UIVisualEffectView,通过这个类来实现毛玻璃效果与上面的UIToolbar一样,而且效率也非常之高,使用也是非常简单,几行代码搞定. UIVisualEffectView是一个抽象类,不能直接使用,需通过它下面的三个子类来实现(UIBlurEffect, UIVisualEffevt, UIVisualEffectView)。
子类UIBlurEffect只有一个类方法,用来快速创建一个毛玻璃效果,参数是一个枚举,用来设置毛玻璃的样式。
1 UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds]; 2 bgImgView.image = [UIImage imageNamed:@"huoying4.jpg"]; 3 bgImgView.contentMode = UIViewContentModeScaleAspectFill; 4 //[bgImgView setImageToBlur: [UIImage imageNamed:@"huoying4.jpg"] blurRadius:20 completionBlock:nil]; 5 bgImgView.userInteractionEnabled = YES; 6 [self.view addSubview:bgImgView]; 7 8 /* 9 毛玻璃的样式(枚举) 10 UIBlurEffectStyleExtraLight, 11 UIBlurEffectStyleLight, 12 UIBlurEffectStyleDark 13 */ 14 UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; 15 UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:effect]; 16 effectView.frame = CGRectMake(0, 0, bgImgView.frame.size.width*0.5, bgImgView.frame.size.height); 17 [bgImgView addSubview:effectView];
方式三:高斯模糊处理实现毛玻璃效果
这种方法是我比较推荐的方法,利用高斯模糊处理可以很方便的做出毛玻璃特效。
1 UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds]; 2 //bgImgView.image = [UIImage imageNamed:@"huoying4.jpg"]; 3 bgImgView.contentMode = UIViewContentModeScaleAspectFill; 4 // 对背景图片进行毛玻璃效果处理 参数blurRadius默认是20,可指定,最后一个参数block回调可以为nil 5 [bgImgView setImageToBlur: [UIImage imageNamed:@"huoying4.jpg"] blurRadius:20 completionBlock:nil]; 6 bgImgView.userInteractionEnabled = YES; 7 [self.view addSubview:bgImgView];
时间: 2024-10-16 19:19:00