Ich habe meine iPhone App für iOS 5 und 6 entwickelt. Nun möchte ich, dass sie iOS 7 unterstützt, aber auch die beiden älteren Versionen. Wie viele Entwickler habe ich mit der Statusleiste, die meine Ansichten überschneidet, gekämpft und ich verstehe, dass es keine Möglichkeit gibt, den alten Statusleistenstil beizubehalten iOS 7 .
Aber viele Beiträge auf Stackoverflow schlagen vor, die iOS 6/7 Deltas zu verwenden, die in Xcode mit dem neuen gesetzt werden können SDK:
Ich habe das versucht, aber ich habe festgestellt, dass nichts passiert, wenn ich diese Werte auf die Root-Ansicht eines View-Controllers anwende. Diese Deltas wirken sich nur auf alle Teilansichten aus, die in der Stammansicht enthalten sind.
Warum funktionieren die Deltas nicht für die Root-Ansicht? Gibt es eine Möglichkeit, es zum Laufen zu bringen? (Ich möchte Deltas nicht allen meinen UI-Elementen in allen meinen View-Controllern hinzufügen.)
Ich habe diese Arbeit gefunden, die für mich funktioniert.
%Vor%Von dir Frage Was ich denke, ist dir leid, Delta-Werte für einzelne Subviews zu setzen. Aber es ist sehr einfach, denke ich. Wählen Sie einfach alle Unteransichten:
und Sie können die gleichen Delta-Werte für alle Ihre Unteransichten vom Größeninspektor auf einmal hinzufügen ... so einfach wie das!
Lass mich dir helfen, eigentlich ist es leise einfach. Sie müssen die folgenden Schritte befolgen:
Legen Sie als iOS 7 für Ziel-xib im Dateiinspektor fest.
1.Stellen Sie alle Ihre Ansichten in einer Containeransicht dar, die den Frame (0,20, rootViewWidth, rootViewHeight) mit dem Interface Builder enthält. Hinweis: Sie müssen Delta für keine Ansichten in der Containeransicht festlegen. Das Delta für die Containeransicht lautet: Delta-Y = -20, Delta-Höhe = 20, sonst sind sie Null.
2. Fügen Sie eine weitere Ansicht (name als statusBarBackgroudView) von frame (0,0, rootViewWidth, 20) in xib hinzu. Deltas für statusBarBackgroudView werden sein: delta-Y = -20 sonst sind null.
Geben Sie die gewünschte bg Farbe zu statusBarBackgroudView, die unter iOS 7 in der Statusleiste angezeigt wird und in iOS 6 wird sie einfach auf Y = -20 verschoben, so dass sie nicht sichtbar ist.
Die Ansichtshierarchie in XIB sollte wie folgt aussehen:
%Vor% Dieses Code-Segment hat das Problem für mich gelöst. Ich habe es in eine BaseViewController
geschrieben, die eine Oberklasse für alle UIViewController
im Projekt ist. Ich denke, es ist praktikabler, diesen einfachen Code hinzuzufügen, anstatt Deltas für jede xib-Datei zu modifizieren. Abgeleitet von Bhavya Kotharis Antwort: