Как сделать UIToolbar понятным?

У меня есть UIToolbar, который имеет белый оттенок, с элементом кнопки на панели, за которым следует некоторое гибкое пространство, за которым следует еще одна кнопка панели. Я хотел бы сделать панель инструментов полностью понятной, чтобы я мог видеть, что находится под гибким пространством (я не забочусь о том, что стоит за кнопками). Есть ли способ сделать это? Я попытался настроить панель на полупрозрачную, но это не делает ее полностью ясной.

Любая помощь будет принята с благодарностью.

Спасибо

Ответ 1

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

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

Ответ 2

Подкласс UIToolbar и реализуем метод ниже:

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

подробнее здесь

Ответ 3

установить панель инструментовStyle -1, как это показано

 tools.barStyle = -1; // clear background

Ответ 4

Hacky, извините, но единственный способ, который я нашел до сих пор, который надежно работает как в iOS 7, так и в iOS 6, заключается в следующем:

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

Ответ 5

Если вы хотите, чтобы глобальное решение использовало прокси-сервер UIAppearance:

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

Ответ 6

Это можно сделать без подкласса в 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];

Ответ 7

Свифт 3 версии принятого ответа:

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

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