2017-10-13 6 views
2

Je crée un programme UINavigationController:Créé UINavigationController avec Programmatically Grand Titre tombe sous UIStatusBar

navigationController = UINavigationController(rootViewController: modeSelectVC!) 
navigationController?.delegate = self 

window.rootViewController = navigationController 
window.makeKeyAndVisible() 

Alors je personnalise mon apparence UINavigationBar comme ceci:

navigationBarAppereance.barTintColor = UIColor.ColorPalette.bostonUniversityRed 
navigationBarAppereance.tintColor = UIColor.ColorPalette.eerieBlack 
navigationBarAppereance.barStyle = .black 
navigationBarAppereance.isTranslucent = true 
navigationBarAppereance.prefersLargeTitles = true 
navigationBarAppereance.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.ColorPalette.babyPowder] 

La configuration UINavigationBar est caché dans la rootViewController fourni avec la barre d'état, mais lorsque le rootViewController pousse un autre contrôleur de vue, la barre d'état et la barre de navigation deviennent visibles comme s o:

UINavigationController with problematic <code>Back</code> button placement

Le résultat est que je entrais qu'il soit, mais comme vous pouvez voir ci-dessus, le bouton back est mal aligné. Si je laisse aller le grand titre préférant, alors le bouton arrière est correctement aligné comme d'habitude mais pourquoi est-il désaligné quand un grand titre est utilisé.

Répondre

2

Je genre de résolu le problème. Une fois que j'ai activé la barre d'état sur le contrôleur de vue initial, par la suite, tout ce qui a été présenté, correctement affiché la barre de navigation avec la barre d'état. Je ne sais toujours pas ce qui a causé le problème (s'il s'agissait d'une erreur d'implémentation ou d'une mauvaise documentation), mais traiter avec UINavigationBar peut être difficile!

2

Il y a une bonne réponse pour cette here:

You should pin the top of the navigation bar to the bottom of the status bar and use the UIBarPositioningDelegate mechanism to set its position to .topAttached, which will cause it to stretch under the status bar correctly.

+0

J'ai ajouté ceci: 'func position (pour la barre: UIBarPositioning) -> UIBarPosition {return .topAttached}' mais malheureusement le problème est toujours en cours. –

+0

@ CanSürmeli peut-être essayer 'navigationController.navigationBar.clipsToBounds = false'? –

+0

Malheureusement, pas encore. –