2012-11-12 11 views
7

używałem następujący kod, aby mój Pasek nawigacyjny przejrzyste iOS5:Nie można dokonać Navigation Bar całkowicie przezroczysty w iOS6

const float colorMask[6] = {222, 255, 222, 255, 222, 255}; 
UIImage *img = [[UIImage alloc] init]; 
UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)]; 
[self.navigationController.navigationBar setBackgroundImage:maskedImage forBarMetrics:UIBarMetricsDefault]; 

Aktualizacja do iOS6 oraz pasek nawigacji jest jeszcze przezroczysta, ale teraz ma cienki czarny linia pod nim. Jak mogę uczynić pasek nawigacji całkowicie przezroczystym?

Próbowałem również wszystkie z poniższych kryteriów:

self.navigationController.navigationBar.translucent = YES; 
self.navigationController.navigationBar.opaque = YES; 
self.navigationController.navigationBar.tintColor = [UIColor clearColor]; 
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor]; 
[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 
[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent]; 
[[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 

Z góry dzięki.

+0

Czy to możliwe, że maska ​​obraz nie jest całkowicie objęciem wysokość paska, to pozostawiając czarny „przestrzeń”, gdzie UINavigationBar nie dość przyjść równo z widzenia? – CodaFi

+0

Rozwiązany. iOS6 dodał cień do paska nawigacyjnego. Tak więc kod maskowania, którego używałem z iOS5 nadal działa dobrze - po prostu muszę dodać, jeśli ([self.navigationController.navigationBar odpowiadaToSelector: @selector (shadowImage)]) { [self.navigationController.navigationBar setShadowImage: [[UIImage alloc ] w tym]]; } aby pozbyć się cienia. –

Odpowiedz

6

Rozwiązany. iOS6 dodał cień do paska nawigacyjnego. Tak więc kod maskowania, którego używałem w iOS5, nadal działa dobrze - wystarczy dodać

1
if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)])   
{ 
    [self.navigationController.navigationBar setShadowImage:[[[UIImage alloc] init] autorelease]]; 
    // autorelease is necessary, or else [[UIImage alloc] init]'s retainCount is 2. 
} 
2
self.navigationController.navigationBar.translucent = YES; // Setting this slides the view up, underneath the nav bar (otherwise it'll appear black) 
    const float colorMask[6] = {222, 255, 222, 255, 222, 255}; 
    UIImage *img = [[UIImage alloc] init]; 
    UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)]; 

    [self.navigationController.navigationBar setBackgroundImage:maskedImage forBarMetrics:UIBarMetricsDefault]; 
//remove shadow 
    [[UINavigationBar appearance] setShadowImage: [[UIImage alloc] init]];