15

我有一个带有白色色调的 UIToolbar,带有一个条形按钮项,然后是一些灵活的空间,然后是另一个条形按钮项。我想让工具栏完全清晰,以便我可以看到灵活空间下的内容(我不关心看到按钮后面的内容)。有没有办法做到这一点?我尝试将工具栏设置为半透明,但这并不能完全清楚。

4

8 回答 8

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

 [self.toolbar setBackgroundColor:[UIColor clearColor]];
于 2013-04-16T11:24:02.980 回答
8

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

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

在此处查看更多详细信息

于 2012-08-21T15:29:50.403 回答
4

像这样设置toolbarStyle -1

 tools.barStyle = -1; // clear background
于 2013-07-10T13:38:33.493 回答
2

哈基,对不起,但到目前为止我发现在 iOS 7 和 iOS 6 中可靠工作的唯一方法是这样做:

[[toolbar.subviews objectAtIndex:0] removeFromSuperview];
于 2013-11-14T14:53:18.910 回答
1

如果您想要一个全局解决方案,请利用UIAppearance代理:

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

于 2014-04-21T01:02:32.223 回答
0

它可以在 iOS 6+ 中通过将属性设置translucent为“YES”来完成,而无需子类化。

这在下面的 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];
于 2012-12-13T05:54:11.023 回答
0

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

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

如果要清除分隔符灰线

toolbar.setShadowImage(UIImage(), forToolbarPosition: .any)
于 2020-06-05T13:07:31.450 回答
-1

Swift 3 版本的已接受答案:

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

    self.toolbar.setShadowImage(UIImage(), forToolbarPosition: UIBarPosition.any)
于 2017-12-26T12:18:41.433 回答