我想在我的视图中添加模糊效果,我使用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
,它就会变得像黑白一样。例如,随机的蓝绿色:
答案 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上需要模糊的视图(在自定义类上)