2014-02-13 14 views
11

Ich habe mit Auto-Layout in Interface Builder eingerichtet. Ich möchte keine Ansichten verwerfen, die an den oberen Layout-Guide angeheftet sind, wenn ich die Statusleiste in Runtime ausgeblendet habe.iOS7 ausblenden Statusleiste, aber nicht Top-Layout-Guide

Ich habe festgestellt, dass myViewController.topLayoutGuide.length von 20 auf 0 wechselt, wenn die Statusleiste ausgeblendet wird. Wie man es verhindert? Oder (als Workaround), wie Sie die Vollbildansicht für verschiedene Fenstergrößen ohne Pin to Top Layout Guide einrichten?

Einige Code meine Situation zu beschreiben:

Log(@"frame: %@, top: %.0f", NSStringFromCGRect(myViewController.myView.frame), self.topLayoutGuide.length); 
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; 
Log(@"frame: %@, top: %.0f", NSStringFromCGRect(myViewController.myView.frame), self.topLayoutGuide.length); 

Ausgang:

frame: {{40, 24}, {240, 40}}, top: 20 
frame: {{40, 4}, {240, 40}}, top: 0 
+0

Nicht ganz klar, was Sie erreichen wollen. Versuchen Sie, dass die Ansicht die Elemente an einem festen Ort anzeigt, unabhängig davon, ob die Statusleiste angezeigt wird oder nicht? Oder ist das ein iOS6/7-Switching-Problem? Sie können die Statusleiste in IB auch ausblenden, wenn dies Probleme beim Layout von Komponenten im Vergleich zum Laufzeitergebnis verursacht. – Ben

+0

Ich verberge Statusleiste in Runtime und in diesem Moment UI verschiebt. Der Grund ist in 'topLayoutGuide'. Ich möchte die Benutzeroberfläche beibehalten, wenn sich die Statusleiste verbirgt. – brigadir

+0

Zeigen Sie die Ansicht und entfernen Sie dann die Statusleiste oder geben Sie an, dass die Statusleiste nicht angezeigt wird, bevor die Ansicht angezeigt wird? – Ben

Antwort

19

Die topLayoutGuide Eigenschaft ist nur lesbar und Sie können es nicht ändert verhindern.

Sie können Ihre Artikel nicht an den topLayoutGuide, sondern an den Superview anheften. Das sollte dein Problem lösen.

enter image description here

+1

Danke :-) Die Superview-Einschränkung scheint nur verfügbar zu sein, wenn über das gleiche Menü auf Ihrem Screenshot getan. – Etan

+0

Dies ist ein fantastischer Tipp! – algal

+0

Großartig! Sie sparen meine Zeit ~ – seapy

Verwandte Themen