更改条形色彩使模糊区域变成黑色和白色
我想为我的视图添加一个模糊的效果,并且我使用UIToolbar
来完成此操作。 但是当我尝试在UIToolbar
上添加色调颜色时,会发生奇怪的事情。
这里是我用来添加UIToolbar
的代码,非常基本,没什么奇怪的:
UIToolbar *toolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.blurView.frame.size.width, self.blurView.frame.size.height)];
[self.blurView addSubview:toolbar];
在添加barTintColor
之前,一切看起来不错:
但是在添加色调后,
[toolbar setBarTintColor:[UIColor colorWithWhite:0.000 alpha:0.500]];
工具栏下的所有东西都变成黑白色:
起初我认为颜色或透明度有问题,我一直玩着不同的颜色和不同的透明度。 只要我使用setBarTintColor
,它就像这样变成黑色和白色。 例如,一个随机的蓝绿色:
它看起来是UIToolbar的一个问题。
取而代之的是设置色调颜色,你可以添加一个CALayer,其背景颜色的alpha分量小于1,这取决于你想要你的颜色有多突出,如下所示:
CALayer *extraColorLayer = [CALayer layer];
extraColorLayer.frame = CGRectMake(0, 0, toolbar.frame.size.width, toolbar.frame.size.height);
extraColorLayer.backgroundColor = [UIColor colorWithRed:r/255 green:g/255 blue:b/255 alpha:0.5].CGColor;
[toolbar.layer addSublayer:extraColorLayer];
这似乎会产生您正在寻找的效果。
改编自这个答案。
我认为这种情况对于黑白案件更好:
iOS 7.0
UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:self.blurView.bounds];
if (isBlack)
toolbar.barStyle = UIBarStyleBlackTranslucent;
else
toolbar.barStyle = UIBarStyleDefault;
toolbar.autoresizingMask = self.blurView.autoresizingMask;
[self.blurView insertSubview:blurEffect atIndex:0];
iOS 8.0或后者
UIBlurEffect *effect;
if (isBlack)
effect =[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
else
effect =[UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *blurEffect = [[UIVisualEffectView alloc] initWithEffect:effect];
[self.blurView insertSubview:blurEffect atIndex:0];
您可以创建一个UIView类并将其关联到在故事板上需要模糊的视图(在自定义类上)
链接地址: http://www.djcxy.com/p/18993.html上一篇: Change the bar tint color makes the blurry area becomes black and white
下一篇: Render script rendering is much slower than OpenGL rendering on Android