I have a UIToolbar that has a white tint, with a bar button item, followed by some flexible space, followed by another bar button item. I would like to make the toolbar completely clear so that I can see what is under the flexible space (I don't care about seeing what is behind the buttons). Is there a way to do this? I have tried setting the toolbar to translucent, but that does not make it completely clear.
[self.toolbar setBackgroundImage:[UIImage new]
forToolbarPosition:UIToolbarPositionAny
barMetrics:UIBarMetricsDefault];
[self.toolbar setBackgroundColor:[UIColor clearColor]];
Subclass UIToolbar, and implement the below method:
- (void)drawRect:(CGRect)rect
{
[[UIColor colorWithWhite:0 alpha:0.6f] set]; // or clearColor etc
CGContextFillRect(UIGraphicsGetCurrentContext(), rect);
}
see more details here
UIInterface.h
. But what could possibly go wrong? :S –
Boyla set toolbarStyle -1 like this
tools.barStyle = -1; // clear background
Hacky, sorry, but the only way I've found so far that reliably works in both iOS 7 and iOS 6 is to do this:
[[toolbar.subviews objectAtIndex:0] removeFromSuperview];
firstObject
instead of objectAtIndex:0
–
Minier firstObject
was a private API. ;) –
Street There is a solution in @ievgen answer in Swift 5.1
toolbar.setBackgroundImage(UIImage(), forToolbarPosition: .any, barMetrics: .default)
toolbar.backgroundColor = .clear
If you want to clear the separator gray line
toolbar.setShadowImage(UIImage(), forToolbarPosition: .any)
If you want a global solution take advantage of the UIAppearance
proxy:
UIToolbar *toolbarAppearance = [UIToolbar appearance];
[toolbarAppearance setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
It can be done without subclassing in iOS 6+ with setting the property translucent
to `YES.
This will not work in iOS 5 in below. Here's how it can be done without subclassing toolbar:
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];
Swift 3 version of accepted answer:
self.toolbar.isTranslucent = true
self.toolbar.setBackgroundImage(UIImage(),
forToolbarPosition: UIBarPosition.any,
barMetrics: UIBarMetrics.default)
self.toolbar.setShadowImage(UIImage(), forToolbarPosition: UIBarPosition.any)
© 2022 - 2024 — McMap. All rights reserved.