2009-05-10 10 views

Respuesta

2

la barra de navegación tiene una propiedad llamada vista de título: configúrelo en la imagen que desee. Dado que titleView sobrescribe el título de la barra de navegación, debe incluir el título deseado en el archivo de imagen. Aún así establezca el título de acuerdo con lo que desea para que aparezca en el botón Atrás cuando presione una vista Controlador

+0

No creo que quieras hacer esto. En lugar de crear una imagen simple de 32x32 (por ejemplo) junto al texto (extremadamente fácil de dibujar), está creando una imagen mucho más grande. Pero sí, esta es definitivamente una opción. –

+0

Dibujé una imagen 23x23, pero no sé cómo mostrarla en la barra de navegación. ¿Podrías decirnos? – ebaccount

+2

No tiene que reemplazar la vista de título, puede crear una UIImageView, cargar su imagen de icono y agregarla como elemento secundario de la vista de título. Usa la propiedad frame de tu UIImageView para colocarlo donde quieras. –

9

No lo he probado pero como UINavigationBar es una vista, puede agregarle subViews.

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]; 

Puede usar cosas como la propiedad backItem para calcular la posición de la vista de su imagen.

+0

Hola, ¿Podría decirme cómo puedo obtener acceso a mi UINavigationBar? Gracias. – ebaccount

+0

Sí, funciona. Muestra la imagen en la esquina superior izquierda de la barra de navegación. Obtuve el acceso mediante UINavigationBar * navBar = [self.navigationController navigationBar]; Sin embargo, no pude controlar la posición x, y de la imagen. No importa qué valores establezca en myImageView.frame.origin.x y y aún se muestra en la esquina superior izquierda. ¿Podría decirme cómo puedo establecer la posición – ebaccount

+0

¿Puede mostrar el código para que pueda ver exactamente lo que está haciendo? Recuerde que el marco de las imágenes es relativo al marco de la UITabbar, por lo que debe verificarlo primero. –

36

Aquí se explica cómo tener la imagen centrada en la barra de navegación.

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

self.navigationItem.titleView = imageView; 

[imageView release]; 

Este código está en realidad incluido con la fuente de Apple para NavBar y se puede encontrar en el Centro de desarrollo de iPhone en Apple. La fuente muestra varias formas de manipular el StatusBar & NavBar.

+1

Es posible que desee establecer el tamaño de la vista de imagen antes de configurarlo como titleView. Los parámetros de origen no importan; se centrarán automáticamente. Los segundos dos números son ancho y alto. 'imageView.frame = CGRectMake (0, 0, 200, 30);' –

+0

¡gracias esto funcionó perfecto! – iwasrobbed

+1

esto no se extiende al máximo, la mejor respuesta que he encontrado es http://stackoverflow.com/questions/979750/background-image-for-navigation-view-iphone – LolaRun

6

Si desea que la imagen en la parte derecha de la barra de navegación, se puede definir como un botón personalizado con ninguna acción cuando presed, como este

UIButton* fakeButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage.png"]]; 
UIBarButtonItem *fakeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:fakeButton]; 
self.navigationItem.rightBarButtonItem = fakeButtonItem; 
[fakeButtonItem release]; 
[fakeButton release]; 
+0

Sí, creo que este responde realmente la pregunta original (que tiene la imagen a la derecha del título). ¡Eso es justo lo que necesitaba también! –

3

Basta con colocar el código en lo que va a - (void)viewWillAppear:(BOOL)animated; funcionar bien y añadir la imagen tiene un tamaño de 320x40 uno llamado Top bar

UIImage *image = [UIImage imageNamed: @"TopBar.png"]; 
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; 
+0

Genial, gracias por responder! – edzio27

0

Sólo tiene que escribir su propia barra de navegación. Por lo tanto usted tiene que desactivar el puño Barra de navegación:

Desactivar la barra superior en el constructor de interfaces mediante la selección de su regulador de la navegación en su Storyboard: Atributos Inspector -> simulados Métrica -> Top Bar: seleccione Ninguno

Después usted puede agregar cualquier HeaderView te gusta ...

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]; 
1

me encontré con el mismo problem.Found la mejor solución

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

Espero que esto ayude ....

Cuestiones relacionadas