Как программно визуализировать плоский фон UIColor в качестве фона для UIToolbar? - PullRequest
2 голосов
/ 14 апреля 2011

Итак, я следовал учебному пособию, которое позволяет мне создать подкласс UIToolbar и нарисовать изображение в качестве пользовательского фона для UIToolbar.

Код был примерно таким:

// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    UIImage *backgroundImage = [UIImage imageNamed:@"toolbar_background.png"];
    [backgroundImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

Это работает безупречно. Учитывая, что я просто хочу, чтобы фон моей панели инструментов был ровным цветом. По сути, что-то вроде [UIColor blackColor] , есть ли более простой способ сделать это в методе drawRect?

Требуется создать плоское черное фоновое изображение высотой 320 x 44 пикселя и использовать его с приведенным выше кодом, что выглядит чрезмерно накладно, когда [UIColor blackColor] доступно? Я просто не уверен, как это реализовать здесь.

Я думал о том, чтобы сделать что-то вроде этого:

- (void)drawRect:(CGRect)rect
{
  UIView *test = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.frame.size.width,self.frame.size.height)];

  test.backgroundColor = [UIColor blackColor];
  [self addSubview:test];
}

Но это не работает, потому что тогда UIView COVERS все элементы панели UIToolbar, которые я добавлю позже, т. Е. Панель инструментов черная, да, но черный поверх всех элементов панели инструментов, поэтому они не видны.

Есть ли обходной путь?

Спасибо.

Ответы [ 2 ]

11 голосов
/ 27 мая 2013

Вы можете создать плоский UIToolbar без необходимости создавать подкласс.Просто установите BackgroundColor, BackgroundImage и ShadowImage.

[toolbar setBackgroundColor:[UIColor blackColor]];
[toolbar setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
[toolbar setShadowImage:[[UIImage alloc] init] forToolbarPosition:UIToolbarPositionAny];
3 голосов
/ 14 апреля 2011

Переопределите метод -drawRect:, как в первом примере, но вместо рисования изображения используйте метод UIRectFill, например:

[[UIColor blackColor] setFill];
UIRectFill(self.bounds);
...