Ответ 1
[self.toolbar setBackgroundImage:[UIImage new]
forToolbarPosition:UIToolbarPositionAny
barMetrics:UIBarMetricsDefault];
[self.toolbar setBackgroundColor:[UIColor clearColor]];
У меня есть UIToolbar, который имеет белый оттенок, с элементом кнопки на панели, за которым следует некоторое гибкое пространство, за которым следует еще одна кнопка панели. Я хотел бы сделать панель инструментов полностью понятной, чтобы я мог видеть, что находится под гибким пространством (я не забочусь о том, что стоит за кнопками). Есть ли способ сделать это? Я попытался настроить панель на полупрозрачную, но это не делает ее полностью ясной.
Любая помощь будет принята с благодарностью.
Спасибо
[self.toolbar setBackgroundImage:[UIImage new]
forToolbarPosition:UIToolbarPositionAny
barMetrics:UIBarMetricsDefault];
[self.toolbar setBackgroundColor:[UIColor clearColor]];
Подкласс UIToolbar и реализуем метод ниже:
- (void)drawRect:(CGRect)rect
{
[[UIColor colorWithWhite:0 alpha:0.6f] set]; // or clearColor etc
CGContextFillRect(UIGraphicsGetCurrentContext(), rect);
}
подробнее здесь
установить панель инструментовStyle -1, как это показано
tools.barStyle = -1; // clear background
Hacky, извините, но единственный способ, который я нашел до сих пор, который надежно работает как в iOS 7, так и в iOS 6, заключается в следующем:
[[toolbar.subviews objectAtIndex:0] removeFromSuperview];
Если вы хотите, чтобы глобальное решение использовало прокси-сервер UIAppearance
:
UIToolbar *toolbarAppearance = [UIToolbar appearance];
[toolbarAppearance setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
Это можно сделать без подкласса в 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];
Свифт 3 версии принятого ответа:
self.toolbar.isTranslucent = true
self.toolbar.setBackgroundImage(UIImage(),
forToolbarPosition: UIBarPosition.any,
barMetrics: UIBarMetrics.default)
self.toolbar.setShadowImage(UIImage(), forToolbarPosition: UIBarPosition.any)