2011-02-05 13 views

Respuesta

23

Puede quitar el degradado y establecer su propio color sólido insertando este código en la clase que tiene la barra de navegación. Puedes cambiar el UIColor al color que necesites. Tenga en cuenta que este código debe estar fuera de otra implementación, por lo que cualquier archivo .m en el que lo ponga lo pone antes de la implementación de la clase ya implementada en ese archivo.

@implementation UINavigationBar (UINavigationBarCategory) 
- (void)drawRect:(CGRect)rect { 
UIColor *color = [UIColor blueColor]; 
CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetFillColor(context, CGColorGetComponents([color CGColor])); 
CGContextFillRect(context, rect); 
} 
@end 
+0

En mi aplicación, tengo dos UINavigationBars. Quiero que uno mantenga el gradiente, y quiero que uno no tenga el gradiente. ¿Cómo podría hacer esto? (Este código funciona por cierto, pero hace que ambas barras no tengan gradiente) – CodeGuy

+0

Para tener los dos comportamientos diferentes que está buscando, deberá tener dos subclases personalizadas de UINavigationBar. En una subclase sobrescribe el método drawRect como lo hice en la implementación anterior. En la otra subclase, simplemente no define el método drawRect y no anulará el efecto degradado original. avísame si lo haces funcionar. – Nitrex88

+9

Han pasado algunos meses, pero ¿hay alguna posibilidad de que marque mi respuesta como correcta? Necesito cierta reputación, así que puedo poner una recompensa en una de mis preguntas ... gracias – Nitrex88