如何让UIToolbar有一个清晰的背景?

时间:2012-08-21 15:24:55

标签: iphone objective-c ios uinavigationbar uitoolbar

我有一个UIToolbar,它有一个白色调,带有一个条形按钮项,后面跟着一些灵活的空间,然后是另一个条形按钮项。我想让工具栏完全清晰,这样我才能看到灵活空间下的东西(我不在乎看到按钮后面的东西)。有没有办法做到这一点? 我尝试将工具栏设置为半透明,但这并不能完全清楚。

8 个答案:

答案 0 :(得分:57)

[self.toolbar setBackgroundImage:[UIImage new]
              forToolbarPosition:UIToolbarPositionAny
                      barMetrics:UIBarMetricsDefault];

 [self.toolbar setBackgroundColor:[UIColor clearColor]];

答案 1 :(得分:8)

UIToolbar的子类,并实现以下方法:

- (void)drawRect:(CGRect)rect 
{
  [[UIColor colorWithWhite:0 alpha:0.6f] set]; // or clearColor etc
  CGContextFillRect(UIGraphicsGetCurrentContext(), rect);
}

详情请见here

答案 2 :(得分:2)

像这样设置toolbarStyle -1

 tools.barStyle = -1; // clear background

答案 3 :(得分:2)

Hacky,对不起,但到目前为止,我发现在iOS 7和iOS 6中可靠运行的唯一方法是:

[[toolbar.subviews objectAtIndex:0] removeFromSuperview];

答案 4 :(得分:1)

如果您希望全局解决方案利用UIAppearance代理:

UIToolbar *toolbarAppearance = [UIToolbar appearance]; [toolbarAppearance setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];

答案 5 :(得分:0)

可以在iOS 6+中进行子类化,将属性translucent设置为“是”。

这在iOS 5中无法使用。以下是没有子类化工具栏的方法:

const float colorMask[6] = {222, 255, 222, 255, 222, 255};
UIImage *img = [[UIImage alloc] init];
UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];

[self.toolbar setBackgroundImage:maskedImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];

答案 6 :(得分:0)

在Swift 5.1中的 @ievgen 答案中有一个解决方案

toolbar.setBackgroundImage(UIImage(), forToolbarPosition: .any, barMetrics: .default)
toolbar.backgroundColor = .clear

如果要清除分隔符灰线

toolbar.setShadowImage(UIImage(), forToolbarPosition: .any)

答案 7 :(得分:-1)

接受答案的Swift 3版本:

   self.toolbar.isTranslucent = true
    self.toolbar.setBackgroundImage(UIImage(),
                               forToolbarPosition: UIBarPosition.any,
                               barMetrics: UIBarMetrics.default)

    self.toolbar.setShadowImage(UIImage(), forToolbarPosition: UIBarPosition.any)