¿Cómo puedo eliminar el efecto brillo/brillo de los botones en las barras de navegación? Si personalizo la barra de navegación utilizando una imagen personalizada, los botones no se ven afectados, puedo eliminar el efecto de ellos (la línea y el glosar) o definir un código de color hexadecimal para todo el botón, o incluso una imagen personalizada para ellos ¿también?Eliminación del efecto brillo de los botones en un UINavigationBar
Respuesta
Acabo de pasar por el proceso de resolver esto. Básicamente, debe crear imágenes elásticas personalizadas y usarlas como fondo del botón para deshacerse del brillo. Reemplazar los botones de retroceso en un UINavigationController es un poco más difícil. Para eso usé un UINavigationControllerDelegate para reemplazar el botón de retroceso predeterminado con mi botón personalizado.
Aquí hay algo de código:
crear una categoría en UIBarButtonItem que crea su botón personalizado. Aquí está el mío. Yo uso esta categoría para personalizar los dos botones de la barra regulares y los botones traseros:
@interface UIBarButtonItem (UIBarButtonItem_customBackground) + (id) customBarButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector; + (id) customBackButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector; @end @implementation UIBarButtonItem (UIBarButtonItem_customBackground) + (id) customButtonWithImageNamed:(NSString *)imageName selectedImageNamed:(NSString *)selectedImageName leftCapWidth:(CGFloat)leftCapWidth edgeInsets:(UIEdgeInsets)edgeInsets title:(NSString *)title target:(id)target selector:(SEL)selector { UIButton* customButton = [UIButton buttonWithType:UIButtonTypeCustom]; [customButton addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside]; customButton.titleLabel.font = [UIFont boldSystemFontOfSize:12.0f]; customButton.titleLabel.shadowColor = [UIColor colorWithRed:0.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:0.25f]; customButton.titleLabel.shadowOffset = CGSizeMake(0.0f, -1.0f); customButton.titleLabel.lineBreakMode = UILineBreakModeTailTruncation; customButton.titleEdgeInsets = edgeInsets; UIImage* navButtonBackgroundImage = [[UIImage imageNamed:imageName] stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:0.0f]; UIImage* navButtonPressedBackgroundImage = [[UIImage imageNamed:selectedImageName] stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:0.0f]; [customButton setBackgroundImage:navButtonBackgroundImage forState:UIControlStateNormal]; [customButton setTitle:title forState:UIControlStateNormal]; [customButton setBackgroundImage:navButtonPressedBackgroundImage forState:UIControlStateHighlighted]; [customButton setBackgroundImage:navButtonPressedBackgroundImage forState:UIControlStateSelected]; CGSize size = CGSizeMake(30.0f, 30.0f); if (title != nil) { size = [[NSString stringWithString:title] sizeWithFont:customButton.titleLabel.font]; } customButton.frame = CGRectMake(0.0f, 0.0f, size.width + 20.0f, 30.0f); customButton.layer.shouldRasterize = YES; customButton.layer.rasterizationScale = [[UIScreen mainScreen] scale]; return [[[UIBarButtonItem alloc] initWithCustomView:customButton] autorelease]; } + (id) customBarButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector { return [self customButtonWithImageNamed:@"navButtonBG.png" selectedImageNamed:@"navButtonPressedBG.png" leftCapWidth:6.0f edgeInsets:UIEdgeInsetsMake(0.0f, 5.0f, 0.0f, 5.0f) title:title target:target selector:selector]; } + (id) customBackButtonWithTitle:(NSString *)title target:(id)target selector:(SEL)selector { return [self customButtonWithImageNamed:@"backButtonBG.png" selectedImageNamed:@"backButtonPressedBG.png" leftCapWidth:12.0f edgeInsets:UIEdgeInsetsMake(0.0f, 11.0f, 0.0f, 5.0f) title:title target:target selector:selector]; } @end
añadir el botón a su UINavigationBar
UIBarButtonItem* logoutButton = [UIBarButtonItem customBarButtonWithTitle:@"Logout" target:self selector:@selector(logout)]; self.navigationItem.rightBarButtonItem = logoutButton;
Si también desea reemplazar los botones traseros del UINavigationController, la configuración de un UINavigationControllerDelegate e implemente el método willShowViewController como lo siguiente:
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { if([navigationController.viewControllers count ] > 1) { UIViewController* backViewController = [navigationController.viewControllers objectAtIndex:(navigationController.viewControllers.count - 2)]; NSString* backText = backViewController.title; UIBarButtonItem* newBackButton = [UIBarButtonItem customBackButtonWithTitle:backText target:navigationController selector:@selector(popViewControllerAnimated:)]; viewController.navigationItem.leftBarButtonItem = newBackButton; viewController.navigationItem.hidesBackButton = YES; } }
Aquí están los stretc Hable imágenes que estoy usando:
- Botón Atrás: pulsada:
- botón regular: pulsada:
USTED. SON. ASI QUE. TENIENDO. ¡¡¡¡¡INCREÍBLE!!!!! ¡Te amo, hombre! – Eugene
@Justin Gallagher Justin gracias ¡gracias, gracias! –
¿Cómo agrego este código a un proyecto para usarlo? –
tiene que usar el botón personalizado con imágenes sin ningún efecto de brillo en las imágenes mediante las cuales puede deshacerse del efecto de globo de la barra de navegación.
Para cambiar el botón de retroceso no es necesario para poner en práctica el método delegado uinavigationcontroller.
Solo necesita establecer la propiedad hidesBAckButton en SÍ después de configurar el botón deseado como @Justin Gallacher explicó perfectamente.
self.navigationItem.leftBarButtonItem = [UIBarButtonItem customBackButtonWithTitle:@"Back" target:self.navigationController selector:@selector(popViewControllerAnimated:)];
self.navigationItem.hidesBackButton = YES;
Esto ni siquiera es necesario, configurar la propiedad leftBarButtonItem sobreescribirá el botón Atrás – Daniel
- 1. Efecto de brillo interior del botón
- 2. Eliminación del efecto Brillo/Brillo en el iPhone a través de UIPrerenderedIcon no funciona en el dispositivo
- 3. Efecto de brillo interior en WPF
- 4. Efecto de brillo exterior en el borde
- 5. UINavigationBar con botones como título.
- 6. efecto de sombra para UINavigationbar como GameCenter
- 7. ¿Cómo eliminar el efecto de mouse predeterminado en los botones WPF?
- 8. Cómo dibujar un borde iluminado (efecto de brillo exterior)?
- 9. iPhone: UINavigationBar con botones: ajuste la altura
- 10. Efecto de brillo de pantalla en WPF o Silverlight
- 11. efecto de brillo de animación de Android en imageview
- 12. Eliminación de minimizar/maximizar botones en Tkinter
- 13. pregunta de efecto de brillo de interfaz de iPhone
- 14. Ayuda con el efecto Pixel Shader para brillo y contraste
- 15. ¿Cómo obtener un efecto de sombreado "Brillo" en OpenGL ES 2.0?
- 16. ¿Cómo hacer efecto de brillo alrededor de un mapa de bits?
- 17. spacing rightBarButtonItems en UINavigationBar
- 18. Cómo cambiar el color del texto en los elementos del botón UINavigationBar
- 19. ¿Cómo imitar un botón de eliminación de brillo rojo en el contacto de iphone/ipad?
- 20. mejor manera de conseguir un teléfono de Windows 7 efecto de brillo
- 21. Android: ¿Cómo lograr el efecto de brillo cuando se presiona largamente un elemento de la lista?
- 22. CSS: Cómo crear botones con brillo reflejado similares a los iconos de iOS?
- 23. ¿Apple aplica el efecto de brillo del icono de la aplicación y el redondeo de esquina en cada icono?
- 24. Android: enumerando los botones en un gamepad
- 25. título personalizado del centro en UINavigationBar?
- 26. Posición del título personalizado UINavigationBar
- 27. Fundido de un color a blanco (aumento del brillo)
- 28. Posición UIBarButtonItem en el borde de UINavigationBar
- 29. Cassandra: eliminación de un nodo del clúster
- 30. Crear un brillo alrededor de un UIView
@Rudy - Si cree que la pregunta es un duplicado de otra, vote para cerrarla como tal en lugar de editar el cuerpo de la pregunta. –
Este es un posible duplicado de [iOS: Cómo reemplazar el brillo/brillo de fondo de la barra de búsqueda con un color] (http://stackoverflow.com/questions/6696200/ios-how-to-replace-search-bar-background- shine-glow-with-one-color) –