Griff, Ausrichtung ändern Sie auf dem iPad mit einem UIViewController und zwei XIB -
ich würde gerne Griff die Ausrichtung ändern Sie auf eine iPad-Anwendung mit einem UIViewController und zwei XIBs, sagen wir mal MenuView und MenuViewLandscape.
So, in der willRotateToInterfaceOrientation Methode der MenuViewController, wie kann ich das ändern XIB, ohne mit einem anderen controller für den landscape-Modus ?
Ich bin mit dem folgenden code:
if( toInterfaceOrientation != UIInterfaceOrientationPortrait ){
MenuViewController *landscape = [[MenuViewController alloc]
initWithNibName: @"MenuViewLandscape"
bundle:nil
];
[self setView:landscape.view];
}
else {
MenuViewController *potrait = [[MenuViewController alloc]
initWithNibName: @"MenuView"
bundle:nil
];
[self setView:potrait.view];
}
Aber wenn ich auf Querformat-Ansicht der XIB-der Querformat-Ansicht-Steuerelemente werden nicht richtig gedreht.
- Kein Glück mit diesem?
- siehe Antwort unten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, es gibt keine seltsamen Nebenwirkungen, die mit dieser Umsetzung, aber probieren Sie etwas wie dieses, und sehen, ob es für Sie arbeitet:
Dies setzt Voraus, dass der Besitzer der Datei in Ihrem MenuView und MenuViewLandscape XIBs festgelegt MenuViewController und dass das outlet ist in beiden XIBs als gut. Alle Ihre Steckdosen sollten wieder richtig auf die Drehung, wenn Sie
loadNibNamed
.Wenn Sie für iOS 4, können Sie auch ersetzen Sie die
loadNibNamed
Linien mit diesen:und
Diese davon ausgehen, dass die UIView, die Sie anzeigen möchten, folgt unmittelbar auf den File ' s Owner und First-Responder-proxy-Objekte in der XIBs.
Dann müssen Sie nur sicherstellen, dass die Ansichten gedreht werden, richtig für die interface-Orientierung. Für alle Ansichten, die nicht in der Standard-hochformat zu drehen, indem Sie die
transform
- Eigenschaft der Ansicht und mitCGAffineTransformMakeRotation()
mit den entsprechenden Werten wie im obigen Beispiel gezeigt.Die rotation allein könnte lösen Ihr Problem ohne die zusätzliche Belastung der Federn. Jedoch, laden Sie eine ganze neue Instanz einer
MenuViewController
und Einstellung, seine Sicht auf die vorhandenenMenuViewController
's Ansicht könnte dazu führen, dass einige seltsame Verhalten mit lifecycle und rotation events, so könnten Sie sicherer sein, die versuchen, die obigen Beispiele. Sparen Sie sich die Mühe mit erstellen neuerMenuViewController
Fällen, wenn Sie müssen nur den Blick von ihm.Hoffe, das hilft!
Justin
Vielleicht die Antwort von Jon Rodriguez hier wird das tun, was Sie wollen:
Verwenden möchten, muliple-Federn für verschiedene iphone-Ausrichtungen
Wenn Sie zwei UIViewController-Klassen, eine Basisklasse für portrait-Modus und eine Unterklasse, die für landscape-Modus, können Sie fast alle den code in der Basisklasse. So, dass Ihnen die meisten Vorteile des single-view-controller-Klasse, aber auch damit Sie andere Lösungen wie diese:
Einfachste Weg, um Unterstützung für mehrere Ausrichtungen? Wie lade ich eine custom Feder, wenn die Anwendung in der Landschaft?