настройка фонового изображения UIToolBar в iphone - PullRequest
3 голосов
/ 17 апреля 2010

Я хочу установить фоновое изображение UIToolbar в своем приложении для iPhone.

В настоящее время я настраиваюсь с помощью UIColor 'initWithPatternImage:.

Но он не делает то, что я хочу.

Просьба предложить другое решение.

Ответы [ 3 ]

4 голосов
/ 30 января 2011

Вам не нужно создавать собственный класс. Вы можете добавить категорию в 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, чтобы соответствовать стилю вашего приложения.

3 голосов
/ 17 мая 2010

Или вы можете сделать собственный класс и назначить его своему элементу управления (через конструктор интерфейса) и внутри, который реализует метод drawRect ...

как

- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"CustomImage.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
1 голос
/ 17 апреля 2010
...