Estoy haciendo una aplicación de iPhone que permite al usuario regresar a UINavigationBar. Sin embargo, la forma en que se ve ahora es horrible. Estoy tratando de personalizarlo con mi propia imagen (menos el fondo predeterminado UIBarButtonItem). Mi imagen incluye mi fondo personalizado, pero aún puede ver parte del botón a la izquierda y a la derecha.BackButton personalizado UINavigationBar?
UIBarButtonItem *cancelButton = [[[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back_button_normal.png"] style:UIBarButtonItemStylePlain target:self action:@selector(cancel:)] autorelease];
self.navigationItem.leftBarButtonItem = cancelButton;
¿Hay alguna manera de eliminar ese espacio? ¿Existe la posibilidad de que pueda usar un UIButton para poder personalizarlo por completo? Hice algo en el constructor de interfaces donde arrastré un UIButton al botón derecho de UINavigationBar y funciona perfectamente. ¿Hay alguna forma en que pueda hacerlo programáticamente?
Gracias!
Así es como se ve:
editar # 1:
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(cancel:) forControlEvents:UIControlEventTouchDown];
[button setTitle:@"Show View" forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"back_button_normal.png"] forState:UIControlStateNormal];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
[self.navigationItem setLeftBarButtonItem:barButtonItem];
Así es como me gano la base para el UINavigationBar (lugares en mi RootViewController):
@implementation UINavigationBar (UINavigationBarCustomDraw)
- (void) drawRect:(CGRect)rect {
[self setTintColor:[UIColor colorWithRed:0.85f green: 0.85f blue:0.85f alpha:1]];
if ([self.topItem.title length] > 0 && ![self.topItem.title isEqualToString:@"Back to ..."]) {
[[UIImage imageNamed:@"UINavigationBar_background.png"] drawInRect:rect];
CGRect frame = CGRectMake(0, 0, 320, 44);
UILabel *label = [[[UILabel alloc] initWithFrame:frame] autorelease];
[label setBackgroundColor:[UIColor clearColor]];
label.font = [UIFont boldSystemFontOfSize: 20.0];
label.shadowColor = [UIColor colorWithWhite:0.0 alpha:1];
label.textAlignment = UITextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.text = self.topItem.title;
self.topItem.titleView = label;
} else {
[[UIImage imageNamed:@"login_button.png"] drawInRect:rect];
self.topItem.titleView = [[[UIView alloc] init] autorelease];
}
}
@end
posibles duplicados: [Cómo crear backBarButtomItem con vista personalizada para un UINavigationController] (http: // stackoverflow.com/questions/526520/how-to-create-backbarbuttomitem-with-custom-view-for-a-uinavigationcontroller); [Despliegue del botón Atrás de UINavigationBar] (http://stackoverflow.com/questions/2053435/uinavigationbar-back-button-skinning); [Cómo cambiar un UIBarButtonItem en un UINavigationBar] (http://stackoverflow.com/questions/2570247); de la barra lateral ** Relacionados **. –