Как отобразить изображение на панели навигации приложения iPhone? - PullRequest
22 голосов
/ 10 мая 2009

как вывести изображение на панель навигации приложения iPhone? (скажем, сразу после заголовка)

Ответы [ 7 ]

36 голосов
/ 09 ноября 2009

Вот как центрировать изображение в NavBar.

UIImage *image = [UIImage imageNamed: @"NavBarImage.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage: image];

self.navigationItem.titleView = imageView;

[imageView release];

Этот код фактически содержится в исходном коде Apple для NavBar и может быть найден в Центре разработчиков iPhone в Apple. Источник показывает вам различные способы управления как StatusBar, так и NavBar.

9 голосов
/ 10 мая 2009

Я не проверял это, но так как UINavigationBar - это представление, вы можете добавить к нему подпредставления.

UIImage* myImage = [UIImage imageNamed:@"Myimage.png"];
UIImageView* myImageView = [[UIImageView alloc] initWithImage:myImage];
myImageView.frame.origin.x = 30.0; // You will have to find suitable values for the origin
myImageView.frame.origin.y = 5.0;

[myTabbar addSubView:myImageView];
[myImageView release];

Вы можете использовать такие вещи, как свойство backItem, чтобы вычислить положение вашего изображения.

6 голосов
/ 19 мая 2010

Если вы хотите, чтобы изображение находилось справа от навигационной панели, вы можете определить его как настраиваемую кнопку без каких-либо действий при нажатии, например,

UIButton* fakeButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage.png"]];
UIBarButtonItem *fakeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:fakeButton];
self.navigationItem.rightBarButtonItem = fakeButtonItem;
[fakeButtonItem release];
[fakeButton release];
3 голосов
/ 19 июля 2012

Просто поместите этот код в - (void)viewWillAppear:(BOOL)animated;, чтобы он работал нормально и добавьте одно изображение размером 320x40 с именем Top Bar

UIImage *image = [UIImage imageNamed: @"TopBar.png"];
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
2 голосов
/ 10 мая 2009

на панели навигации есть свойство, которое называется заголовком - установите для изображения, которое вам нравится. Так как titleView перезаписывает заголовок навигационной панели, вы должны включить желаемый заголовок в файл изображения. Тем не менее, установите для заголовка то, что вам нужно, чтобы оно отображалось на кнопке «Назад» при нажатии на контроллер вида

.
1 голос
/ 21 марта 2014

Я столкнулся с той же проблемой. Нашел лучшее решение

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

Надеюсь, это поможет ....

0 голосов
/ 12 февраля 2013

Просто напишите свою собственную панель навигации. Поэтому вы должны отключить кулак панели навигации:

Отключите верхнюю панель в конструкторе интерфейсов, выбрав свой контроллер навигации в ваш раскадровка: Инспектор атрибутов -> Симулированные метрики -> Верхняя панель: выберите Нет

После этого вы можете добавить любой понравившийся вам HeaderView ...

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, sFrame.size.width, 100)];
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"header_image.png"]];
self.headerView.backgroundColor = background;

// ...add buttons and labels

[self.view addSubview:headerView];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...