Frage

Dies ist nur ein Beispiel für das grundlegende Problem, das ich habe, also keine Sorge, wenn diese Situation ein bisschen sinnlos klingt;)

Lassen Sie uns sagen, dass ich eine App, die in erster Linie ein UINavigationController nur zwei Ebenen tief. Die oberste Ebene ist eine Tabelle mit einer Liste von Bilddateinamen und die zweite Ebene hat nur ein UIImageView das Bild für den Dateinamen zeigt tippten.

Für eine App wie diese, weiß jemand eine gute Möglichkeit, die Tabelle auf der obersten Ebene zu ermöglichen autorotate, während die zweite Ebene der Bilder fixierten im Portrait-Modus zu halten?

Bisher kann ich es fast bekommen ... aber wenn ich einen Dateinamen tippen, während im Querformat, das Bild Dias in dem Blick in der falschen Ausrichtung, auch wenn der zweiten Ebene View-Controller des ShouldAutorotateToInterfaceOrientation kehrt ja nur für Portrait Modi.

War es hilfreich?

Lösung

Das Problem ist, dass, wenn Sie die automatische Rotation verwenden die gesamte UI (einschließlich dem UIWindow Beispiel glaube ich) gedreht wird.

Alles, was auf die Navigationssteuerung an dieser Stelle geschoben wird in der Landschaft durchgeführt werden.

Also, wenn Sie die Imageview schieben, das ist genau das, was man bekommt.

Um diese an die Arbeit, man muss entweder:

  1. Behandeln Sie die Rotation der Stammansicht manuell (mit Hilfe einer Transformation)
  2. Unrotate die Bildansicht durch -PI / 2 unter Verwendung einer Transformation.

Wie auch immer Sie die Transformationen manuell durchführen müssen, um dies funktioniert.

Als Randnotiz, diese schlechte UI-Design sein kann. Als Benutzer würde, erwarte ich, wie ich für Bilder Drill-down bis right up erscheinen. Aber das ist, ohne den genauen Kontext Ihrer Anwendung zu kennen.

Andere Tipps

Es gab keine gute Möglichkeit, dies in iPhone OS 2.x zu tun, aber in 3.0, sie haben es dramatisch verbessert.

In 2.x wurde die shouldAutorotateToInterfaceOrientation: Delegatmethode nur gehorcht für Änderungen auf die Orientierung, so würden Sie das Verhalten erhalten Sie beschreiben: wenn es in einer anderen Ansicht Controller gedreht wurde, wäre es bleiben gedreht durch Stösse und erscheint auch dann, wenn die neuen view-Controller nicht Drehung zu dieser Ausrichtung unterstützt haben.

In 3.0 shouldAutorotateToInterfaceOrientation: UINavigationController Umfragen auf jedem Push oder Pop und gehorchen, was es den Weg gibt man erwarten würde, zum Beispiel: wenn Sie sich gerade in Landschaft links Ausrichtung gedreht sind, und schieben Sie eine Instanz eines View-Controller, dass nur die richtige Art und Weise im Hochformat-Ausrichtung unterstützt Portrait Orientierung über shouldAutorotateToInterfaceOrientation:, wird es automatisch und sofort die logische Ausrichtung und Dias in der neuen Ansicht kippt.

Beachten Sie, dass dies nur auf Anwendungen funktionieren verknüpft gegen (und daher erfordert) 3,0. Für Anwendungen, gegen 2.x verknüpft, wird es das alte Verhalten emulieren.

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