2014-04-05 2 views
6

Я пытаюсь, чтобы моя панель навигации стала на 100% прозрачной, так что UINavigationButtonItems видны только, а фон (обычно белый) должен показывать фоновое изображение.UINavigationController прозрачность?

Я попытался

HomeNavigationController *navBar = [[HomeNavigationController alloc] initWithRootViewController:self.myViewController]; 
[navBar.navigationBar setBarTintColor:[UIColor clearColor]]; 
    [navBar.navigationBar setTranslucent:YES]; 

хотя ни как на работу.

EDIT:

Использование

[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]; 

Я вижу, что он работал, как и ожидалось, однако детали теперь невидимы.


FINALEDIT: Ах код выше работает, просто убедитесь, что вы не применять какие-либо другие изменения внешнего вида без проверки первого!

код, который на самом деле делает то, что предназначено:

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

В качестве альтернативы вы можете установить прозрачное изображение, но это имеет смысл. Вам понадобится остальная часть кода, показанная в исходном правлении, если вы не хотите, чтобы строка представляла границу.

+0

вы могли бы попробовать [navBar.navigationBar setTintColor: [UIColor colorWithWhite: 1,0 альфа: 0,0]; – user2277872

+1

Смотрите это: http://stackoverflow.com/questions/21850622/transparent-uinavigationbar/21850947#21850947, возможно, поможет u. –

+1

Если вам нужно, чтобы ваш UINavigationBar был полностью прозрачным, то почему бы не скрыть его вообще и использовать пользовательские 'UIButtons' вместо' UIBarButtonItems'? Появление 'UINavigationBars',' UITabBars' и 'UIToolbars' изменилось с iOS 7, что усложнило и, вероятно, нецелесообразно возиться с их прозрачностью. –

ответ

6

Есть трюк. Просто установите прозрачное изображение на фоне панели навигации.

UIImage *fakeImage = [UIImage imageNamed:@"transparentImage"]; 
[navigationBar setBackgroundImage:fakeImage forBarMetrics:UIBarMetricsDefault]; 

ИЛИ

[navigationBar setBackgroundImage:[UIImage new] 
        forBarMetrics:UIBarMetricsDefault]; 
+1

Вам также необходимо установить теневое изображение так же, как пустым 'UIImage'. – voidref

Смежные вопросы