Настройка фонового изображения для панели навигации, созданной программно - PullRequest
0 голосов
/ 08 сентября 2011

Я застрял в настройке панели навигации моего приложения. Я добавил навигационный контроллер программно. Действительно, в методе application: didFinishLanchingWithOptions моего делегата приложения, Я добавил и скрыл панель навигации, используя следующий код:

self.window.rootViewController  = self.viewController;
// ListingNav previously declared as instance variable
self.ListingNav = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.ListingNav.navigationBarHidden = YES;
[self.window addSubView:ListingNav.view];
[self.window makeKeyAndVisible];
return YES;

Теперь я хотел бы установить изображение в качестве фона панели навигации, установить другое фоновое изображение для кнопки «назад» и добавить еще одну кнопку с правой стороны той же панели навигации с собственным фоновым изображением. Есть идеи, как поступить?

Спасибо за помощь,

1010 * Stephane *

Ответы [ 4 ]

2 голосов
/ 05 октября 2012

Вы можете попробовать:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed: @"ImageNameWithOutExtension"] forBarMetrics: UIBarMetricsDefault];

1 голос
/ 08 сентября 2011

Вы можете настроить панель навигации, не скрывая ее. Просто добавьте эти компоненты, используя метод addSubview.

Фоновое изображение можно добавить следующим образом:

UIImageView *imageview = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"bg.png"]];
[self.navigationController.navigationBar addSubview:imageview];

[self.navigationController.navigationBar sendSubviewToBack:imageview];
[imageview release];

Поскольку вам нужна пользовательская кнопка, вы можете добавить UIButton таким же образом. Создайте новый UIButton с собственным фоном и добавьте его.

1 голос
/ 08 сентября 2011

Подкласс UINavigationBar и переопределение его метода drawRect для рисования изображения.

Если ваш UINavigationController затем создается через InterfaceBuilder, вы можете легко изменить класс связанного UINavigationBar.Если вы создаете свой UINavigationController через код, вы можете использовать object_setClass.( это, например, )

На StackOverflow уже есть серия вопросов по той же теме, не стесняйтесь искать "NavigationController background"на сайте.

0 голосов
/ 07 декабря 2011

Используйте этот код .....

     [self.navigationController.navigationBar setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@""]]];
...