Erhalten Rahmen Höhe ohne navigation bar Höhe und tab-Leiste in Höhe tieferen Einblick in die Hierarchie
Ich habe einen ViewController (B), die gehandhabt wird von einem PageViewController, die sich in einem anderen ViewController (A) und öffnen Sie Sie modal. Ich habe mittig den ViewController (B) genau in der Mitte des Bildschirms. Dies funktioniert sehr gut.
Aber wenn ich drücken Sie die ViewController (A) aus einem NavigationController Rahmen der ViewController (B) ist zu groß und erstreckt sich unter die NavigationBar und die TabBar. Aber ich möchte es zentriert zwischen die NavigationBar und die TabBar.
Ich wissen, wie kann ich die Höhe der navbar und die tabbar so konnte ich die Größe ViewController (B):
var topBar = self.navigationController?.navigationBar.frame.height
var bottomBar = self.tabBarController?.tabBar.frame.height
Aber das funktioniert nicht tief in das vier-Hierarchie im ViewController (B). selbst.navigationController und selbst.tabBarController sind gleich null. Wie also bekomme ich die Höhe der navbar und tabbar tiefer in die view-Hierarchie? Oder muss ich einfach haben, um es zu übergeben unten von einem ViewController zum anderen, bis ich erreichen ViewController (B)? Oder ist da noch ein offensichtlicher Weg, um die Ansicht zu zentrieren? Danke.
(Ich habe versucht zu posten, screenshots zum besseren Verständnis, aber mir fehlt die nötige Ruf Punkte zu posten Bilder, sorry)
yourview.bounds
nach viewDidAppear.Die Grenzen geben Sie nicht mir die topLayoutGuide und/oder die bottonLayoutGuide
Wenn Sie geöffnet haben, die view-controller Modal, es ist nicht ein Kind der controller mit der Tab-Bar daher selbst.tabBarController ist null. Es sitzt oben in der navigation stack. Sie müssen pass, die info durch, e.g, in Vorbereitung(für den übergang:). Wenn Sie schon die Modal geöffnet dann, warum Sie möchten, dass der Benutzer zu denken, Sie können klicken Sie auf die Registerkarte Schaltflächen (die Sie wahrscheinlich nicht)? Vielleicht haben Sie nicht meine Modal öffnen.
InformationsquelleAutor Darko D. | 2015-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden :
diese Unterstützung hoch-und Querformat-Zustand.
Aktualisiert:
UIApplication.shared.statusBarFrame.height + self.navigationController!.navigationBar.frame.height
selbst.navigationController!.navigationBar.frame.Höhe ist null für mich.
Können Sie nicht mit navigationController in Ihrer Steuerung.
InformationsquelleAutor Ehsan Jelodar
Für UITabBar, dieser code funktioniert :
InformationsquelleAutor MichelRobico
Für Swift 3
InformationsquelleAutor Matthew Harries
Navigation bar Höhe Statusleiste Höhe und tab bar Höhe immer konstant :
Können Sie direkt subtrahieren Sie diese Konstanten anzeigen Höhe:
selbst.Blick.frame.Größe.Höhe- (44+20+49)
Das ist auch falsch. Die status bar ist 40-Punkte während eines Telefonats.
Dies ist zwar nicht falsch , bitte lies die Frage erstmal , es ist kein Verweis auf einen Anruf.
Wenn der user einen Anruf und versucht, die app zu benutzen, die status bar ist tatsächlich 40pts hoch, wirft diese Berechnungen. Also diese Antwort ist falsch in dieser situation. Ihre Antwort ist nicht gültig für alle Situationen.
Auch, Sie können nie wissen, was Apple entscheidet, ändern sich mit den nächsten Versionen von iOS, auch 1px Unterschied brechen würde.
InformationsquelleAutor Rajdeep Singh