更改条形色彩使模糊区域变成黑色和白色

我想为我的视图添加一个模糊的效果,并且我使用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