2017-09-23 8 views
1

Wenn ich versuche, eine benutzerdefinierte UINavigationBar zu einem View-Controller ähnlicheiOS 11 benutzerdefinierte Navigationsleiste gibt zwei Bars

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 

    } 
} 

zwei verschiedene Bars bis zeigen hinzuzufügen. enter image description here

Irgendeine Idee warum es den weißen farbigen Stab mit einer kleineren Höhe gibt?

Dies ist der 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 
    }... 

Antwort

0

Sie sind Eltern wahrscheinlich in Navigationsoberfläche mit einer UINavigationController als View-Controller ist.

Die zweite Navigationsleiste ist also die Navigationsleiste des UINavigationControllers.

+0

Auch die Art und Weise, wie Sie Ihre Navigationsleiste positionieren und dimensionieren, hängt nicht davon ab, wie Sie es tun. Aber wir können damit umgehen, nachdem Sie sich mit der umgebenden Navigationssteuerungsschnittstelle fertig gemacht haben. – matt

+0

Aber es gibt keine Navigationssteuerungsschnittstelle. 'Klasse AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func Anwendung (_ Anwendung: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Alles]?) -> Bool { Fenster = UIWindow? (Rahmen: UIScreen.main.bounds) Fenster .makeKeyAndVisible() let vc = Viewcontroller() Fenster? .rootViewController = vc // Übersteuerungsstelle für die Anpassung nach dem Start der Anwendung. return true } ' –

+0

So behaupten Sie. Aber ich wette, da sind Sachen, die du verbirgst. Ich denke, Sie haben ein Storyboard, von dem Sie nichts wissen, und ich denke, dass der anfängliche View-Controller in Ihrem Storyboard ein Navigationscontroller ist (mit einem ViewController als Root-View-Controller), und _that_ der View-Controller ist, der geladen wird . Die zweite Navigationsleiste dient nur zur Diagnose dieses Problems. – matt

Verwandte Themen