2017-07-28 1 views
0

Ich erstelle eine App mit einem UITabBarController auf der obersten Ebene mit Navigationssteuerungen als Kinder. Wenn ich von einer Registerkarte zum ersten Bildschirm übergehe, ist der Rahmen von VC.view (0.0, 0.0, 375.0, 618.0) und wenn ich dann zu einem anderen VC übergehe, ist der VC.view-Rahmen für diesen VC (0.0, 0.0, 375.0 , 667.0). Da die Differenz 49 ist, gehe ich davon aus, dass die Höhe der TabBar beim ersten Mal berücksichtigt wird, aber nicht weiter unten im Stack. Ich verwende eine proportionale Abhängigkeit basierend auf diesen Zahlen. Gibt es eine Option, so wird immer die TabBar-Höhe oder eine Option, die immer die Höhe nicht entfernen wird. Ich möchte nur ein Setup, bei dem die Ansichtshöhe jeder Haupt-VC gleich ist.Die Höhe der Hauptansicht ändert sich zwischen den ViewControllern. Wie soll ich sie gleich behalten?

Platzierung dieses in viewDidLoad() alle Nachkommen VCs behebt mein Problem:

let size = CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - tabBarController!.tabBar.frame.height) 
view.frame = CGRect(origin: .zero, size: size) 

aber das fühlt sich an mich Hacky und würde eine getoggelt Option oder Einstellung bevorzugen.

Antwort

0

Wenn Sie Storyboards oder XIBs verwenden, stellen Sie sicher, dass die Einschränkung für den unteren Bereich der Ansicht an die view anstelle von bottom layout guide angeheftet ist. Es sollte perfekt funktionieren.

enter image description here

+0

Ich verweise nicht auf Ansichten, die ich erstelle, sondern die oberste Ansicht für jeden UIViewController. – Sethmr

+0

@Sethmr Wenn ja, stellen Sie sicher, dass Sie die Ansichtshöhe messen, nachdem alle Unteransichten ihr Layout in "viewDidLayoutSubviews" beendet haben, aktualisieren Sie dort Ihre Einschränkungen –

+0

Das ist genau, wo ich die Rahmenwerte ausgedruckt habe. Ich bin ziemlich iOS Savvy .... Ich wollte nur nicht zusammen hacken, wenn ich etwas verpasst habe. – Sethmr

0

Verbinden Sie Ihre Viewcontroller Ansicht Steckdose und aktualisiert entsprechend die Höhe Rahmen. oder Sie können subView hinzufügen und die Höhe entsprechend anpassen, entweder mit der Einschränkung

+0

Ich kann das tun, aber gibt es nicht nur eine Option, die das beheben kann? Ich finde, dass auf der allgemeinsten Ebene, Es sollte Symmetrie zwischen den ViewControllern, die verwendet werden. Wenn ich den Frame der Ansicht basierend auf der UIScreen-Höhe minus der Tab-Leiste einstellen muss, ist das mehr oder weniger ein Hack für mich. – Sethmr

Verwandte Themen