3 Réponses :
vous pouvez utiliser le code suivant pour ajouter une vue à la fenêtre de votre application
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // Do any additional setup after loading the view, typically from a nib. let newView = UIView() newView.frame = CGRect(x:0,y:UIApplication.shared.statusBarFrame.height, width: view.frame.size.width, height: 30) newView.backgroundColor = UIColor.red let label = UILabel() label.frame = newView.bounds label.text = "header" newView.addSubview(label) UIApplication.shared.keyWindow?.addSubview(newView) let bounds = self.navigationController!.navigationBar.bounds self.navigationController?.navigationBar.frame = CGRect(x: 0, y: newView.frame.size.height + newView.frame.origin.y, width: bounds.width, height: bounds.height ) }
Veuillez vérifier et me faire savoir si cela fonctionne
cela a fonctionné mais il y a un problème, lorsque je ferme le contrôleur de vue et le contrôleur de navigation, tout s'arrête. Cela signifie que j'ai perdu toutes les références du contrôleur de vue.
Essayez d'utiliser un seul contrôleur de navigation depuis AppDelegate
Faites-en une sous-vue directe de UIWindow et donnez à sa couche une zPosition
très élevée.
élaborez un peu plus votre réponse et si vous avez un morceau de code, partagez-le avec moi. @mat
UIApplication.shared.keyWindow? .addSubview (UIView)
vous pouvez garder dans votre contrôleur de navigation ... ou concevoir votre application de telle manière chaque fois que le viewcontroller s'ouvre, il doit avoir une vue de dessus
élaborez un peu plus votre réponse. @ShauketSheikh
Reportez-vous à ceci: stackoverflow .com / questions / 38540091 /…
créer un contrôleur de base et hériter de ce contrôleur avec chaque contrôleur, dans le contrôleur de base ajouter une vue comme l'en-tête en haut