Frage

Ive erstellt eine Multi-View-Anwendung, die mehrere Controller verwendet und Ansichten steuern anzuzeigen. Das Problem Im Atomen ist, wenn der Simulator zunächst die Ansicht, lädt die Kopfteilweise durch die Leiste am oberen Bildschirmrand und die Werkzeugleiste an der Basis die Basis berührt wird nicht auf dem Bildschirm bedeckt ist. Ich benutzte die Interface Builder Größe Attribute die Ansicht zu steuern, wenn das iphone dreht und es funktioniert perfekt. Alle smaps in Platz perfekt sowohl im Quer- und Hochformat-Modus nach einer Drehung, aber das Problem ist mit der Anfangslast, bevor eine Drehung auftritt. Ihre Gedanken ein sehr geschätzt. Tony

War es hilfreich?

Lösung

Ich habe Probleme hat mit Blick nach Status abgeschnitten werden, nav und Tab Bars. Ich habe die meisten von ihnen festgelegt durch die simulierte Metrics-Funktion im Interface Builder. Auf diese Weise, was Ihr in IB Auslegen ist viel genauer, was Sie gehen, um tatsächlich zu bekommen.

Andere Tipps

ich mit diesem Thema auseinandergesetzt für Tage und Tage -. Keine Menge an arbeitete in IB Hantieren

Am Ende habe ich es durch das Hinzufügen dieser Zeile zu arbeiten:

mainViewController.view.frame = window.screen.applicationFrame;

zur Anwendung: didFinishLaunchingWithOptions: Methode. (Wo Mainviewcontroller sind die primären UIViewController).

Ich lief in diesem zu Thema. Insbesondere dann, wenn eine ADBannerView Anzeige, meine ganze Sicht verschieben würde und unter der Statusleiste und ein wenig leeren Raum nur die Größe der Statusleiste am unteren Rand des iPhone Bildschirm verlassen. Hier ist, wie ich es gelöst: (Adams Antwort hier half mir dieses heraus):

// In the function that displays an iAD Banner
CGRect contentFrame = self.view.bounds;
CGRect myStatusBarFrame = [[UIApplication sharedApplication] statusBarFrame];
CGFloat statusHeight = myStatusBarFrame.size.height;

// Set the view's origin to be under the status bar.

contentFrame.origin.y = statusHeight;

Ich brauchte den Ursprung meiner Ansicht setzen unter der Statusleiste zu sein, und das löste das Problem für mich.

Das Problem ist, dass Sie das Hinzufügen des Controllers „falsch“ laut Apple docs (obwohl IMHO von Apple es schlecht konzipiert - der Standard sein soll, dass Sie nicht verschieben müssen)

, wenn eine Statusleiste haben wird, Apfel erfordert , dass Sie „von Hand“ alle Controller herunterschalten um 20 Pixel (genauer gesagt, durch die Höhe der Statusbar - obwohl das immer 20 Pixel heute ist Apple können Sie die Höhe zur Laufzeit fordern, von der „statusBarFrame“ Eigenschaft in UIApplication)

Apple Klassen - z.B. UINavigationController / UITabBarController - verschieben sich automatisch um 20 Pixel nach unten, wenn sie auf dem Bildschirm hinzugefügt sind. Beiden Klassen haben einen Bug, wo sie diese Verschiebung tun auch wenn sie sind nicht die Hauptsteuerung - so Ihr App plötzlich nach unten verschiebt ein zusätzlichen 20 Pixel, 20 Pixel von weißen Raum oben verlassen

Aber, wenn sie sich drehen, die Klassen oft „get it right“ und wieder an den richtigen Platz. Oder umgekehrt.

C.F. Link für eine viel genauere Erklärung dessen, was vor sich geht, und wie Ihr Code die Art und Weise Apple will, dass Sie schreiben:

http : //blog.red-glasses.com/index.php/tutorials/iphone-auto-rotation-for-intermediate-developers-tutorial-1/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top