2011-02-05 1 views

risposta

23

È possibile rimuovere il gradiente e impostare il proprio colore solido inserendo questo codice nella classe con la barra di spostamento. Puoi cambiare l'UIColor in qualsiasi colore tu abbia bisogno. Nota che questo codice deve essere al di fuori di un'altra implementazione, quindi qualunque file .m lo metti prima di @implement della classe già implementata in quel file.

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

Nella mia applicazione, ho due UINavigationBars. Voglio uno per mantenere il gradiente, e voglio che uno non abbia il gradiente. Come potrei farlo? (questo codice funziona a proposito, ma rende entrambe le barre prive di sfumature) – CodeGuy

+0

Per avere i due diversi comportamenti che stai cercando dovrai avere due sottoclassi personalizzate di UINavigationBar. In una sottoclasse si sostituisce il metodo drawRect come ho fatto nell'implementazione di cui sopra. Nell'altra sottoclasse non si definisce il metodo drawRect e non si sostituisce l'effetto sfumatura originale. fammi sapere se lo fai funzionare. – Nitrex88

+9

Sono passati alcuni mesi, ma c'è qualche possibilità che tu possa contrassegnare la mia risposta come corretta? Ho bisogno di una certa reputazione in modo da poter mettere una taglia su una delle mie domande ... grazie – Nitrex88