visual una transparente patrones navegacion diseño barra app activar iphone ios uinavigationcontroller uinavigationbar frontend

iphone - transparente - diseño visual de una app



iOS: Posicionamiento de los botones de la barra de navegación dentro de la barra de navegación personalizada (3)

Estoy construyendo una aplicación con una barra de navegación personalizada. Después de algunas investigaciones, decidí hacer esto usando una categoría en UINavigationBar. La barra de navegación debe ser un poco más grande de lo normal para acomodar una sombra paralela. Aquí está el código:

#import "UINavigationBar+CustomWithShadow.h" @implementation UINavigationBar (CustomWithShadow) - (void)drawRect:(CGRect)rect { // Change the tint color in order to change color of buttons UIColor *color = [UIColor colorWithHue:0.0 saturation:0.0 brightness:0.0 alpha:0.0]; self.tintColor = color; // Add a custom background image to the navigation bar UIImage *image = [UIImage imageNamed:@"NavBar.png"]; [image drawInRect:CGRectMake(0, 0, self.frame.size.width, 60)]; } - (void)layoutSubviews { self.frame = CGRectMake(0, 20, self.frame.size.width, 60); } @end

El único problema ahora es que la barra de navegación más grande significa que los botones de la barra de navegación terminan demasiado abajo, así:

¿Alguien sabe cómo puedo corregir la posición de los botones?

Gracias por toda la ayuda!

Actualizar:

Agregué los botones a la barra de navegación en el método init del controlador de vista de esta manera:

// Create "Add" button for the nav bar UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(createNewEntry:)]; [[self navigationItem] setRightBarButtonItem:addButton]; [addButton release];


Intente agregar los botones a la barra de navegación en el método viewDidLoad del controlador de vista en su lugar.


Tendrá que agregar LeftBarButtonItem y rightBarButtonItem como elementos personalizados y meterse con los marcos .... por ejemplo:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0,5,buttonImage.size.width,buttonImage.size.height)]; [button setBackgroundImage:buttonImage forState:UIControlStateNormal]; [button addTarget:delegate action:@selector(barButtonPressed:) forControlEvents:UIControlEventTouchUpInside]; [button setTitle:titleString forState:UIControlStateNormal]; [button setTitleColor:CUSTOM_BAR_BUTTON_TITLE_COLOR forState:UIControlStateNormal]; [[button titleLabel] setFont:[UIFont boldSystemFontOfSize:14]]; [[button titleLabel] setShadowColor:CUSTOM_BAR_BUTTON_SHADOW_COLOR]; [[button titleLabel] setShadowOffset:CGSizeMake(0,-1)]; UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:button]; [button release]; [[self navigationItem] setRightBarButtonItem:barButton]; [barButton release];


Mi solución, no la mejor, pero me funciona bien. Mi barra de navegación personalizada tiene una altura de 55 (la altura predeterminada es 44). Corté de mi barra de navegación personalizada solo 44 de altura e lo inserté en la barra de navegación. Luego corté la siguiente parte de mi barra de navegación personalizada (sombras, etc.) y la inserté como vista de imagen debajo de la barra de navegación. Y eso es. Los botones están en los lugares correctos ...