更改条纹色调使模糊区域变为黑白

时间:2014-02-14 00:52:46

标签: ios ios7 uitoolbar blur

我想在我的视图中添加模糊效果,我使用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,它就会变得像黑白一样。例如,随机的蓝绿色:

2 个答案:

答案 0 :(得分:6)

看起来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];

这似乎会产生您正在寻找的效果。

改编自this answer

答案 1 :(得分:-3)

对于黑白案例,我认为这种情况更好:

  • 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的类,并将其关联到Storyboard上需要模糊的视图(在自定义类上)