iOS 7 UIToolBar überschreibt mit Statusleiste

8

Ich habe mein Projekt von iOS 6 auf iOS 7 aktualisiert, aber es scheint ein kleines Problem zu sein. Die Statusleiste und eine Werkzeugleiste überschreiben und liegen sehr nahe beieinander. Die Symbolleiste wurde zuvor hinzugefügt, indem Sie sie manuell in das Storyboard gezogen haben. So sieht es aus:

Ich habe ein paar Fragen gesehen, die vorschlagen, "positionForBar:" und "- (UIBarPosition) positionForBar: (id) bar" zu verwenden, aber ich weiß nicht genau, wie man sie benutzt, eine kleine Erklärung und einen einfachen Weg könnte es helfen. Danke!

UPDATE: Im Folgenden finden Sie einen Code, der ebenfalls korrigiert werden muss. Es funktionierte früher gut, aber da der detailviewcontroller (WebViewController) jetzt in einem Navigationscontroller eingebettet ist, verursacht der folgende Code eine Ausnahme. Sieht so aus, als müsste ich die erste Zeile in dieser Methode ändern.

%Vor%     
AJ112 21.09.2013, 18:03
quelle

6 Antworten

2

Wenn es sich bei Ihrer Konfiguration um eine geteilte Ansicht handelt, z. B. Setup mit zwei Containeransichten, sollten Sie dies tun können. Ziehen Sie beim Einrichten der Containeransichten das obere Ende nach oben, bis Sie die gepunktete blaue Linie sehen, die darauf hinweist, dass sich das obere Ende der Statusleiste befindet. Tun Sie dies mit beiden Containeransichten. Fügen Sie die Werkzeugleiste dem eingebetteten Controller (nicht der Containeransicht) hinzu, die an den Anfang der Ansicht dieses Controllers angeheftet ist. Wenn die linke Ansicht in einen Navigationscontroller eingebettet ist, sah mein Bildschirm so aus:

    
rdelmar 22.09.2013, 00:16
quelle
4

Die oberste Einschränkung Ihrer Ansicht sollte nicht länger der oberste Bereich für die Superansicht sein, sondern eher der obere Bereich des oberen Bereichs.

Sie können dies tun, indem Sie den oberen Bereich unterhalb der Statusleiste nach unten verschieben und anschließend das Abhängigkeitsmenü verwenden, um die Einschränkung zum nächsten Nachbarn hinzuzufügen. Dies sollte nun der oberste Layout-Leitfaden sein oder Sie können es wie in diesen Link in der Entwicklerbibliothek von Apple .

    
BreadicalMD 25.09.2013 14:38
quelle
3

Denken Sie daran, dass Sie Dinge in IB nicht einfach aus zwei Gründen verschieben sollten:

  1. Nicht kompatibel mit iOS 6
  2. Der Hintergrund der oberen Leiste wird nicht über die Statusleiste
  3. erweitert

Also, wenn Sie iOS6 & amp; iOS7-Kompatibilität, Sie könnten eine Bedingung für Objekte hinzufügen, die in ViewDidLoad angepasst werden müssen. Bedenken Sie, dass dies ein letzter Fall ist - versuchen Sie es immer zuerst mit dem automatischen Layout / IB zu beheben:

%Vor%

Und setzen Sie Ihren Bar-Delegierten ähnlich wie Luniz oben, überschreiben Sie positionForBar auf.

%Vor%     
capikaw 23.09.2013 21:08
quelle
1

Ich habe versucht, das gleiche zu tun, aber ich mochte die weiße Statusleiste der akzeptierten Antwort nicht. Es ist mir gelungen, die Symbolleiste unterhalb der Statusleiste so zu platzieren, dass sie eine einheitliche Farbe für die Navigationsleiste hat, die in der Master-Ansicht daneben angezeigt wird.

Meine Lösung bestand darin, die Toolbar um 64 Punkte zu vergrößern und den Topspace auf 0 zu setzen.

Wenn Sie dies tun, müssen Sie sicherstellen, dass Sie nicht die Einschränkung für das Top Space Layout Guide erstellen. Ich konnte dies in Interface Builder erreichen, indem ich den Frame auf 0,0 mit einer Höhe von 64 setze. Dann habe ich den Pin-Dialog aus dem schwebenden Werkzeugmenü genommen. Ich habe Null mit dem oberen I-Balken verwendet, um die Beschränkung zu erstellen.

Die unteren Kanten stimmen in Master und Detail überein und die Färbung ist konsistent. Die Steuerelemente in meiner Symbolleiste wurden nicht überfüllt.

    
James 29.09.2013 07:46
quelle
-1

Schnell 3

Verbinden Sie Ihren Bar-Delegaten und stimmen Sie mit UIToolbarDelegate überein. Fügen Sie dann diese Delegate-Methode hinzu:

%Vor%

weil jetzt

%Vor%     
Mario Sevilla Montoya 07.08.2014 11:27
quelle

Tags und Links