2014-12-02 49 views
8
@IBOutlet var navBar: UINavigationBar! 

self.navBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 
self.navBar.shadowImage = UIImage() 

如果視圖控制器嵌入導航控制器,並使用self.navigationController?.navigationBar.setBack ...等,但使用一個IBOutlet時,它不工作上面的代碼工作(我的例子是沒有嵌入導航控制器)。導航欄不是半透明的。刪除像素邊框 - 不工作

任何想法?

回答

8

把這個放在你的視圖控制器(不在uinavigationbar)。

[[UINavigationBar appearance] setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; 
[[UINavigationBar appearance] setShadowImage:[UIImage new]]; 
+0

我嘗試這樣做,也沒有工作。我也嘗試將它放在AppDelegate中,但是這也沒有,我認爲你的答案只適用於新的實例,而不是已經創建的實例。 – jskidd3 2014-12-03 12:13:18

+0

@ jskidd3這應該工作,我剛剛測試它應該也適用於不在'UINavigationController'中的酒吧。嘗試設置'半透明= false' – Jack 2014-12-04 19:55:48

+0

你把這段代碼放在你的視圖控制器的viewDidLoad方法中嗎? – Demosthese 2014-12-05 04:00:57

3

你究竟在哪裏調用NavBar的外觀設置?當我嘗試以下方法:

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

我已經所需effect.Could您向我們提供也許有點更多的環境?

+0

我在視圖控制器的viewDidLoad中調用它,導航條存在於其中。請問您可以在Swift中編寫您的答案嗎?我似乎無法找到一個setShadowImage方法,只有一個shadowImage屬性。 – jskidd3 2014-12-05 12:34:05

2

如果您使用沒有導航視圖控制器的導航欄,則可以嘗試設置navigationBar.clipsToBounds = YES。我有一個單獨的UIToolbar,這種方法現在可以工作。

0

這適用於導航欄的IBOutlet。

@IBOutlet weak var navigationBar: UINavigationBar! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default) 
    navigationBar.shadowImage = UIImage() 

} 

仔細檢查您的導航欄設置爲視圖控制器的引用插座。

IBOutlet

這裏是表明它按預期工作的示例項目: http://bjtitus.s3.amazonaws.com/NavBarBorderTest.zip