Bitte beachten Sie, dass diese Frage aus dem Jahr 2008 stammt und jetzt nur noch von historischem Interesse ist.
Was ist der beste Weg, um eine iPhone-Anwendung zu erstellen, die von Anfang an im Querformat ausgeführt wird, unabhängig von der Position des Geräts?
Sowohl programmgesteuert als auch mit dem Interface Builder.
ios
objective-c
landscape
Michiel de Mare
quelle
quelle
Antworten:
Nur historische Antwort. Spektakulär veraltet.
Bitte beachten Sie, dass diese Antwort jetzt sehr veraltet ist.
Diese Antwort ist nur eine historische Kuriosität .
Aufregende Neuigkeiten! Wie Andrew unten herausgefunden hat, wurde dieses Problem von Apple in 4.0+ behoben.
Es scheint, dass es NICHT mehr erforderlich ist, die Größe der Ansicht für jede Ansicht zu erzwingen, und das spezifische ernsthafte Problem der Landschaft "nur beim ersten Mal funktioniert" wurde gelöst.
Ab April 2011 ist es nicht möglich, etwas unter 4.0 zu testen oder gar zu bauen, daher ist die Frage eine rein historische Kuriosität. Es ist unglaublich, wie viel Ärger es Entwicklern so lange bereitet hat!
Hier ist die ursprüngliche Diskussion und Lösung. Dies ist jetzt völlig irrelevant, da diese Systeme nicht einmal bedienbar sind.
Es ist EXTREM SCHWIERIG, diese Funktion vollständig auszuführen - es sind mindestens drei Probleme / Fehler im Spiel.
Versuchen Sie dies .. Interface Builder Landschaftsgestaltung
Beachten Sie insbesondere, dass dort, wo "und Sie solltenAutorotateToInterfaceOrientation überall richtig verwenden" steht, überall Ihre Vollbildansichten angezeigt werden.
Hoffe es hilft in diesem Albtraum!
Eine wichtige Erinnerung an das ZUSÄTZLICHE bekannte Problem, das hier vorliegt : Wenn Sie versuchen, zwischen MEHR ALS EINER Ansicht (alle Landschaften) zu wechseln, FUNKTIONIERT ES EINFACH NICHT . Denken Sie unbedingt daran, sonst verschwenden Sie Tage mit dem Problem. Es ist buchstäblich nicht möglich. Es ist der größte offene, bekannte Fehler auf der iOS-Plattform. Es gibt buchstäblich keine Möglichkeit, die Hardware so zu gestalten, dass die zweite Ansicht, die Sie laden, im Querformat angezeigt wird. Die nervige, aber einfache Problemumgehung und das, was Sie tun müssen, ist ein trivialer Master-UIViewController, der nichts anderes tut, als dort zu sitzen und Sie zwischen Ihren Ansichten wechseln zu lassen.
Mit anderen Worten, in iOS wegen eines großen bekannten Fehlers:
Sie können das nur einmal tun . Wenn Sie später versuchen, happyThing.view zu entfernen und stattdessen newThing.view dort einzufügen, FUNKTIONIERT ES NICHT - UND DAS IST DAS. Die Maschine dreht die Ansicht niemals in die Landschaft. Es gibt keine Trickkorrektur, auch Apple kann es nicht zum Laufen bringen. Die Problemumgehung, die Sie anwenden müssen, besteht darin, einen allgemeinen UIViewController zu haben, der einfach dort sitzt und nur Ihre verschiedenen Ansichten enthält (happyThing, newThing usw.). Ich hoffe es hilft!
quelle
Von der Apple Dev Site:
quelle
Zusammenfassung und Integration aller Beiträge, nachdem ich sie selbst getestet habe; Überprüfen Sie das Update für 4.x, 5.x unten.
Ab 3.2 können Sie die Ausrichtung einer laufenden Anwendung nicht mehr anhand von Code ändern.
Sie können eine Anwendung jedoch mit einer festen Ausrichtung starten, obwohl dies nicht einfach ist.
Versuchen Sie es mit diesem Rezept:
UISupportedInterfaceOrientations
in derInfo.plist
Datei auf einshouldAutorotateToInterfaceOrientation:
Methode eingerichtet (um natürlich den gleichen Wert zurückzugeben, den Sie in der Liste definiert haben).In allen Ansichts-Controllern wird eine Hintergrundansicht mit festgelegt
self.view.frame = CGRectMake(0, 0, 480, 320)
in der
viewDidLoad
Methode.Update (iOS 4.x, 5.x) : Das Apple iOS App-Programmierhandbuch enthält einen Abschnitt "Starten im Querformat" im Kapitel "Erweiterte App-Tricks".
Verweise:
quelle
Zuerst habe ich in info.plist gesetzt
dann habe ich diesen Code in applicationDidFinishLaunching eingefügt:
Auf diese Weise kann ich die Ansicht im Interface Builder im Querformat bearbeiten.
quelle
Die Antwort von sasb und michaelpryor scheint richtig zu sein, aber wenn es bei Ihnen nicht funktioniert, versuchen Sie diese Alternative:
Oder dieses:
Oder dieses:
Möglicherweise müssen Sie auch
window makeKeyAndVisible;
zuerst anrufen .Einige Links: Entwicklung im Querformat , iPhone SDK: Wie erzwinge ich nur den Querformatmodus?
@ Robert: Weitere Informationen finden Sie unter iPhone SDK, NDA und Stack Overflow .
quelle
Ich bin überrascht, dass noch niemand diese Antwort gefunden hat:
In all meinen Tests wird beim Entlassen eines Modal View Controllers die bevorzugte Ausrichtung des übergeordneten View Controllers
shouldAutorotateToInterfaceOrientation
berücksichtigt, auch wenn er Teil eines UINavigationControllers ist. Die Lösung hierfür ist also einfach:Erstellen Sie einen Dummy-UIViewController mit einer UIImageView als Hintergrund. Stellen Sie das Image auf das default.png-Image ein, das Ihre App beim Start verwendet.
Wenn Sie
viewWillAppear
in Ihrem Root-View-Controller aufgerufen werden, präsentieren Sie einfach den Dummy-View-Controller ohne Animation.Wenn Sie
viewDidAppear
in Ihrem Dummy-View-Controller aufgerufen werden, schließen Sie den View-Controller mit einer netten Cross-Dissolve-Animation.Das funktioniert nicht nur, es sieht auch gut aus! Übrigens, nur zur Verdeutlichung mache ich den Root View Controller
viewWillAppear
wie folgt:quelle
Das neueste Programmierhandbuch für iPhone OS enthält einen vollständigen Abschnitt mit Beispielcode. Ich bin mir sicher, dass dies eine neue Ergänzung ist. Vielleicht haben Sie sie verpasst. Es werden alle Bedingungen erläutert, die Sie erfüllen müssen. Grundsätzlich...
Suchen Sie nach "Starten im Querformat", Seite 102.
quelle
Siehe diese Antwort: Querformat NUR für iPhone oder iPad
Wenn Sie jedoch gemischte Modi verwenden, sind Sie möglicherweise besser dran
quelle