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