Ich verwende ARKit und möchte den Benutzern erlauben, die App sowohl im Hoch- als auch im Querformat zu verwenden.
Ich möchte, dass alle UI-Steuerelemente bei einer Orientierungsänderung mit Ausnahme von ARSCNView
gedreht werden.
Ich habe versucht, die SzeneView in die entgegengesetzte Richtung zu transformieren, aber das hat nicht funktioniert.
Wie kann ich verhindern, dass sich die Szenenansicht der ARKit-Sitzung dreht, während alle anderen Benutzeroberflächensteuerelemente bei einer Richtungsänderung gedreht werden?
Sie können keine Gerätedrehungsregeln für die Ansicht angeben. Es muss auf View-Controller-Basis eingestellt werden. So funktioniert iOS. Um das zu erreichen, was Sie brauchen, müssen Sie das alleine bewältigen. Wenn Sie beispielsweise Ihre ARSCNView
als Vollbildansicht anzeigen, können Sie sie in einer benutzerdefinierten Unterklasse UIViewController
darstellen und die Rotationskonfiguration für diesen Controller festlegen.
Das Festlegen der unterstützten Ansichtsrotationen für einen bestimmten Ansichtscontroller kann auf viele Arten implementiert werden, darunter einige.
Sie können die unterstützten Ansichtsausrichtungen für UIViewController
festlegen, indem Sie die Methode " application:supportedInterfaceOrientationsForWindow:
" Ihres App-Delegaten überschreiben.
Beispielcode:
%Vor%Referenz:
application:supportedInterfaceOrientationsForWindow:
Methodendokumentation
Unterklasse Ihr UINavigationController
und überschreiben Sie die folgende Eigenschaft:
Nun schaut dies immer in den supportedInterfaceOrientations
des View-Controllers und legt die unterstützten Orientierungen basierend auf dem Rückgabewert fest. Dadurch können Sie dies einfach in jedem gewünschten Ansichtscontroller überschreiben und einen benutzerdefinierten Wert festlegen.
Zum Beispiel könnten Sie in SomeViewController
einfach hinzufügen:
Referenz:
supportedInterfaceOrientations
-Dokumentation
Wenn Sie Ihre UINavigationController
nicht wie oben in Ansatz 2 kategorisieren möchten, können Sie SomeViewController
als Navigationscontroller-Delegat festlegen, der navigationControllerSupportedInterfaceOrientations(:)
Beispielcode:
%Vor%Referenz: