2014-02-18 58 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 
相關問題