2012-10-03 15 views
5

In iOS 5.1.1 habe ich festgestellt, dass wenn ich meine UIWindow (ich bin müde von IB) erstellen und den Rahmen auf [UIScreen mainScreen] festlegen zeigt unter der Statusleiste. Aber wenn ich dasselbe mache, ist iOS 6, erscheint es an der richtigen Stelle direkt unter der Statusleiste.iOS: Programmgesteuertes Erstellen von UIWindow-Ergebnissen in falscher Position

CGRect r = [[UIScreen mainScreen] bounds]; 
self.window = [[UIWindow alloc] initWithFrame: r]; 
self.detailViewController = [[DetailViewController alloc] init]; 
self.window.rootViewController = self.detailViewController; 
[self.window addSubview: detailViewController.view]; 
[self.window makeKeyAndVisible]; 

Wenn jedoch füge ich r.origin.y + = 20, in iOS 5.1.1 das Fenster unter der Statusleiste zu bewegen, das ist nicht das Problem und die Dinge nur weirder bekommen löst.

Was ist der richtige Weg, ein UIWindow in iOS zu platzieren, wenn es programmgesteuert erstellt wird? Danke.

+0

Ich bin sicher, dass Sie viel weniger Probleme haben werden, wenn Sie zurück zu IB gehen. Ich habe kürzlich versucht, Layout-Probleme mit Code zu beheben, und das hat Stunden gedauert. Ich habe es funktioniert, aber später versuchte ich das gleiche mit nur IB, und ein paar Klicks später funktionierte es sogar besser als meine manuelle Codierung. Ich habe gelernt, dass es am besten ist, die Tools so zu verwenden, wie sie gedacht sind. Sonst trifft man Randfälle, die schwer zu lösen sind. – Brennan

Antwort

0

Ich glaube, Sie wahrscheinlich dies tun müssen, um:

self.window.windowLevel = UIWindowLevelStatusBar + 1; 
2

Statt [[UIScreen mainScreen] bounds] Sie [[UIScreen mainScreen] applicationFrame] verwenden möchten. Dies ist der Bereich des Bildschirms unter der Statusleiste (falls sichtbar).