#iphone #cocoa-touch #ios4 #uitoolbar
#iPhone #cocoa-touch #ios4 #uitoolbar
Вопрос:
Итак, я последовал руководству, которое позволяет мне создать подкласс 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 ПОКРЫВАЕТ все элементы панели инструментов, которые я добавлю позже, т. Е. Панель инструментов черная, да, но черный цвет покрывает все элементы панели инструментов, поэтому они не видны.
Есть ли обходной путь?
Спасибо.
Комментарии:
1. Переопределять такой
drawRect:
метод — ФЕНОМЕНАЛЬНО ПЛОХАЯ ИДЕЯ .
Ответ №1:
Вы можете создать плоский UIToolbar без необходимости создавать подкласс. Просто установите backgroundColor, BackgroundImage и shadowImage.
[toolbar setBackgroundColor:[UIColor blackColor]];
[toolbar setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
[toolbar setShadowImage:[[UIImage alloc] init] forToolbarPosition:UIToolbarPositionAny];
Ответ №2:
Переопределите -drawRect:
метод, как в вашем первом примере, но вместо рисования изображения используйте UIRectFill
метод, подобный этому:
[[UIColor blackColor] setFill];
UIRectFill(self.bounds);