2017-09-23 125 views
1

當我嘗試定製UINavigationBar的添加到視圖控制器這樣iOS的11自定義導航欄給出了兩個酒吧

class ViewController: UIViewController 
{ 
    static let nav_bar_height: CGFloat = 64 

    let nav_bar: UINavigationBar = 
    { 
     let nav_bar = UINavigationBar() 
     nav_bar.translatesAutoresizingMaskIntoConstraints = false 
     nav_bar.backgroundColor = .blue 
     return nav_bar 
    }() 

    override func viewDidLoad() 
    { 
     super.viewDidLoad() 
     view.backgroundColor = .yellow 
     view.addSubview(nav_bar) 
     nav_bar.heightAnchor.constraint(equalToConstant: ViewController.nav_bar_height).isActive = true 
     nav_bar.topAnchor.constraint(equalTo: view.topAnchor).isActive = true 
     nav_bar.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true 
     nav_bar.widthAnchor.constraint(equalToConstant: UIScreen.main.bounds.width).isActive = true 

    } 
} 

兩個不同的酒吧露面。 enter image description here

任何想法,爲什麼有一個較小的高度白色的酒吧?

這是AppDelegate中

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
     window = UIWindow(frame: UIScreen.main.bounds) 
     window?.makeKeyAndVisible() 
     let vc = ViewController() 
     window?.rootViewController = vc 
     // Override point for customization after application launch. 
     return true 
    }... 

回答

0

您在導航界面可能是用一個UINavigationController爲您的視圖控制器的父。

所以第二個導航欄是UINavigationController的導航欄。

+0

此外,您定位和調整導航欄的方式並不是您如何做到的。但是我們可以在完成與周圍的導航控制器界面的拼搏之後處理這個問題。 – matt

+0

但沒有導航控制器界面。 'class AppDelegate:UIResponder,UIApplicationDelegate {0} {0} {0}} var window:UIWindow? FUNC應用(_應用:UIApplication的,didFinishLaunchingWithOptions launchOptions:[UIApplicationLaunchOptionsKey:任何]) - >布爾{ 窗口=一個UIWindow?(幀:UIScreen.main.bounds) 窗口.makeKeyAndVisible() 設VC =的ViewController () window?.rootViewController = vc //覆蓋應用程序啓動後自定義的點。 return true } ' –

+0

所以你聲稱。但我敢打賭,你正在隱瞞的東西。我認爲你有一個你沒有告訴我們的故事板,我認爲故事板中的初始視圖控制器是一個導航控制器(使用ViewController作爲其根視圖控制器),_that_是正在加載的視圖控制器。第二個導航欄僅僅是對這個問題的診斷。 – matt