2011-02-05 26 views

Odpowiedz

23

Możesz usunąć gradient i ustawić własny jednolity kolor, umieszczając ten kod w klasie z paskiem nawigacji. Możesz zmienić UIColor na dowolny kolor, który potrzebujesz. Zauważ, że ten kod musi znajdować się poza inną implementacją, więc jakikolwiek plik .m umieścisz go przed @impozycją klasy już zaimplementowanej w tym pliku.

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

W mojej aplikacji mam dwa paski UINavigationBar. Chcę, aby jeden zachował gradient, a ja chcę, aby jeden nie miał gradientu. Jak mogłem to zrobić? (ten kod działa przy okazji, ale powoduje, że oba paski nie mają gradientu) – CodeGuy

+0

Aby mieć dwa różne zachowania, których szukasz, będziesz potrzebować dwóch niestandardowych podklas UINavigationBar. W jednej podklasie nadpisujesz metodę drawRect tak jak w powyższej implementacji. W drugiej podklas po prostu nie definiujesz metody drawRect i nie zastąpisz oryginalnego efektu gradientu. daj mi znać, jeśli sprawisz, że działa. – Nitrex88

+9

Minęło już kilka miesięcy, ale czy jest jakaś szansa, aby zaznaczyć swoją odpowiedź jako poprawną? Potrzebuję dobrej reputacji, więc mogę dać nagrodę za jedno z moich pytań ... dziękuję – Nitrex88