2014-02-18 60 views
12

我是iOS新手,我发现这个解决方案使UINavigationBar透明。 凡在我的项目文件,我可以把这个代码透明UINavigationBar

[self.navigationBar setBackgroundImage:[UIImage new] 
        forBarMetrics:UIBarMetricsDefault]; 
self.navigationBar.shadowImage = [UIImage new]; 
self.navigationBar.translucent = YES; 

因此,它在我的整个工程中应用,其中被使用的导航控制器。

+0

好的..你有什么问题? – iPatel

+0

在'viewDidLoad'或你的'didFinishLunchWithOptions'中的appDelegate文件中 –

+0

我在appDelegate中粘贴了这段代码,但它并没有让navbar变得透明。是否有我应该改变的地方?对不起..开始学习ios :) –

回答

33

把你的RootViewController的这段代码的viewDidLoad功能:

的Objective-C:

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

斯威夫特2.X:

if let navigationBar = navigationController?.navigationBar { 
     navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default) 
     navigationBar.shadowImage = UIImage() 
     navigationBar.translucent = true 
     navigationController?.view.backgroundColor = .clearColor() 
    } 

斯威夫特3:

if let navigationBar = navigationController?.navigationBar { 
     navigationBar.setBackgroundImage(UIImage(), for: .default) 
     navigationBar.shadowImage = UIImage() 
     navigationBar.isTranslucent = true 
     navigationController?.view?.backgroundColor = .clear 
    } 

这工作是肯定的! Transparent UINavigationBar

+0

这就是我的appDelegate [[UINavigationBar appearance] setBackgroundImage:[UIImage new] for BarMetrics:UIBarMetricsDefault]; [UINavigationBar appearance] .shadowImage = [UIImage new]; [UINavigationBar外观] .translucent = YES; 当我运行时,应用程序崩溃,出现此错误终止应用程序,由于未捕获异常'NSInvalidArgumentException',原因:'***非法属性类型,c为外观setter,_installAppearanceSwizzlesForSetter:' 通过使用断点,它指向错误设置半透明 –

+3

如果我可以给5 + 1的话,那么我会的。这是一个很好的解决方案 – Katushai

+0

如何在推动 – Chlebta

2

如果你想改变你所有的应用程序的外观,我建议你使用:

[[UINavigationBar appearance] setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 

希望这将有助于

+0

我已经尝试过,但它不会让它看透。 –

1

在您的UIViewController类。您还可以使用UIAppearance机制http://nshipster.com/uiappearance/

,并把这个

[[UINavigationBar appearance] setBackgroundImage:[UIImage new] 
forBarMetrics:UIBarMetricsDefault]; 
    [UINavigationBar appearance].shadowImage = [UIImage imageNamed:@"Your image file here"]; 

- (BOOL) application:(UIApplication*) application didFinishLaunchingWithOptions:(NSDictionary*) launchOptions 
+0

当我介绍这一行[UINavigationBar外观]时,应用程序崩溃。半透明=是; –

+0

我得到这个错误终止应用程序,由于未捕获异常'NSInvalidArgumentException',原因:'***非法属性类型,c为外观设置,_installAppearanceSwizzlesForSetter:' –

+0

是的,对不起。半透明不是外观选择器。你可以在这里找到完整的外观选择列表https://gist.github.com/mattt/5135521 – Avt

-3

集下面的代码

Self.navigationcontroller.navigationbar.transculant=yes; 
+0

试试Aadi ....但你缺少设置导航栏的空白图像。 – Optimistic

0
Transparent UIToolbar: 
self.toolbar.setBackgroundImage(UIImage(), 
           forToolbarPosition: UIBarPosition.Any, 
           barMetrics: UIBarMetrics.Default) 
self.toolbar.setShadowImage(UIImage(), 
          forToolbarPosition: UIBarPosition.Any) 
Transparent UINavigationBar: 
self.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 
self.navigationBar.shadowImage = UIImage() 
self.navigationBar.translucent = true 
相关问题