Вам не нужно создавать собственный класс. Вы можете добавить категорию в UIToolBar, как показано ниже
@implementation UIToolbar (UIToolbarCategory)
- (void)drawRect:(CGRect)rect {
UIColor *color = [UIColor colorWithRed:0.547 green:0.344 blue:0.118 alpha:1.000]; //whatever goes well with your background image.
UIImage *img = [UIImage imageNamed: @"your-navbar-img.png"];
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
[img release];
self.tintColor = color;
[super drawRect:rect];
}
@end
Я проверял, и он работает хорошо.
P.S .: Я вчера тестировал с 4.3, и он не работал должным образом, но отлично работает с 4.2. Пока не вижу причин, обновлю, как только найду правильный фрагмент.
Для 4.3 и выше, вы должны создавать подклассы UIToolbar или добавление категории UINavigationBar не поддерживается. Следующий код работает с 4.3
#import <UIKit/UIKit.h>
@interface MyAppToolBar : UIToolbar{
}
@end
@implementation MyAppToolBar
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
UIColor *color = [UIColor colorWithRed:0.547 green:0.344 blue:0.118 alpha:1.000]; //wood tan color
UIImage *img = [UIImage imageNamed: @"your-navbar-img.png"];
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
[img release];
self.tintColor = color;
}
@end
Проблема с ограничением заключается в том, что вам нужно изменить пользовательский класс каждого объекта UIToolbar, который есть во всех файлах XIB. И я боюсь, что это не повлияет на панель навигации, когда вы откроете UIImagePickerController, чтобы соответствовать стилю вашего приложения.