2014-12-01 14 views
6

Próbowałem dużo, aby UINavigationBar był przezroczysty. Ale nie udało mi się tego zrobić. Ustawiony przeze mnie obraz był przezroczysty. Oto mój kod. Każda pomoc? Z góry dzięki.Jak zrobić UINavigationBar Transparent w IOS 8?

[rootNavC.navigationBar setBackgroundImage:[UIImage imageNamed:@"NAV_BG_iphone.png"] forBarMetrics:UIBarMetricsDefault]; 
rootNavC.navigationBar.translucent = YES; 
rootNavC.navigationBar.backgroundColor = [UIColor clearColor]; 
[[UINavigationBar appearance] setTitleTextAttributes:@{ 
          UITextAttributeTextColor : [UIColor whiteColor], 
        UITextAttributeTextShadowColor : [UIColor clearColor], 
        UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], 
           UITextAttributeFont : [UIFont fontWithName:@"pastel" size:20] 
}]; 

Odpowiedz

5

Dzięki wszystkim. Chodzi o to, że dodaję tę linię do kontrolera widoku:

if (IS_OS_7_OR_LATER) 
{ 
    self.edgesForExtendedLayout = UIRectEdgeNone; 
    self.extendedLayoutIncludesOpaqueBars = NO; 
    self.automaticallyAdjustsScrollViewInsets = NO; 
} 

dlatego właśnie ten kod nie działa. Po usunięciu linii działa kod. Jest to możliwe.

9

Spróbuj dodać ten kod. Pracował dla mnie w iOS 8.

[self.navigationController.navigationBar setTranslucent:YES]; 
self.navigationController.navigationBar.shadowImage = [UIImage new]; 
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; 
self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init]; 
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor] 

Za pomocą tego kodu, nie trzeba nawet dodawać swoje przejrzysty UIImage. Zaktualizuj tutaj, jeśli ci to pomoże.

+4

No to nie działa –

+1

możesz pokazać zrzut ekranu pasku nawigacyjnym otrzymujesz z tym kodem. –

+0

to zadziałało dla mnie – Shekhu

2

@Sushil wygląda na to, że go ma. W mojej aplikacji, używam

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 

Zamiast allocinit, to jedyna różnica.

+0

Musisz usunąć dodatkowy otwór otwierający, jeśli używasz tego. Nie można go edytować, ponieważ jest to tylko jeden znak. – Uzaak

1

spróbować

[rootNavC.navigationBar setBackgroundImage:[UIImage imageNamed:@"NAV_BG_iphone.png"] forBarMetrics:UIBarMetricsDefault]; 
    rootNavC.navigationBar.translucent = YES; 
    [[rootNavC.UINavigationBar appearance] setBarTintColor:[UIColor clearColor]]; 
    //rootNavC.navigationBar.backgroundColor = [UIColor clearColor]; 
    [[UINavigationBar appearance] setTitleTextAttributes:@{ 
         UITextAttributeTextColor : [UIColor whiteColor], 
       UITextAttributeTextShadowColor : [UIColor clearColor], 
       UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetMake(0, 0)], 
          UITextAttributeFont : [UIFont fontWithName:@"pastel" size:20] 
    }]; 
15

spróbować

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] 
         forBarMetrics:UIBarMetricsDefault]; 
    self.navigationController.navigationBar.shadowImage = [UIImage new]; 
    self.navigationController.navigationBar.translucent = YES; 
    self.navigationController.view.backgroundColor = [UIColor clearColor]; 

Mam nadzieję, że powyższy kod pomaga.

1

To działa na iOS 7 i +

[self.navigationController.navigationBar setTranslucent:YES]; 
self.navigationController.navigationBar.shadowImage = [UIImage new]; 
self.navigationController.view.backgroundColor = [UIColor clearColor]; 
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; 
self.navigationController.navigationBar.shadowImage = [[UIImage alloc] init]; 
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];