Deaktivieren der automatischen Rotation für eine UIView
Meine Anwendung besteht aus einer toolbar und einem AVCaptureVideoPreviewLayer im hintergrund UIView.
Ich würde gerne sehen, dass die Symbolleiste drehen über das Gerät Orientierung, so dass in meinem Haupt-ViewController, ich implementiert die Funktion :
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait
|| interfaceOrientation == UIInterfaceOrientationLandscapeLeft
|| interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
Dies funktioniert gut, aber wenn die Schnittstelle Ausrichtung geändert wird, sehe ich, dass der hintergrund UIView (mit einem video-layer) ist ebenfalls rotiert, so meine Ansicht video spielt nun 90 Grad nach Links oder rechts... Das ist nicht wirklich cool !
Also meine Frage ist : gibt es eine Möglichkeit zum deaktivieren der auto-rotation-animation auf eine spezielle UIView ?
Ich gesehen habe eine ähnliche Frage wie diese : Deaktivieren Anz. autom. für eine einzelne UIViewaber die Antworten nicht passen zu meinem problem, ich brauche wirklich die hintergrund-Ansicht nicht bewegen, nicht zu bekommen, um das problem mit einer Art "counter-animation". Also beschloss ich, bringen dieses Thema.
Irgendwelche Ideen ?
Dank !
InformationsquelleAutor der Frage Thomas Desert | 2010-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
InformationsquelleAutor der Antwort christo16
Dieser Beitrag schon in die richtige Richtung. Um eine
AVCaptureVideoPreviewLayer
nicht drehen mit dem Gerät, ich wickelte es in einUIView
und animiert, Blick in die entgegengesetzte Richtung:Scheint es einen kleinen Kreisverkehr, aber es animiert reibungslos. Andere Ansichten, die auf der Vorschau-Ebene automatisch drehen wie Sie sollten.
InformationsquelleAutor der Antwort Anthony Mattox
Oder waren Sie nämlich zu deaktivieren, nur, wenn eine bestimmte Ansicht zeigt? Wenn ja, können Sie prüfen, ob diese mit UIView ' s isDescendantOfView Methode.
InformationsquelleAutor der Antwort William Jockusch
Ich lief in das gleiche Problem, wenn einfach die Einstellung der Eigenschaft "Ausrichtung" auf AVCaptureVideoPreviewLayer war nicht ausreichend. Das zusätzliche problem ist, dass CALayer nicht unterstützt layout-Manager auf dem iPhone, so dass der Rahmen von der video-Ebene kann falsch sein, wenn das Gerät gedreht wird.
Ich behoben, indem Sie mithilfe eines benutzerdefinierten UIView enthält AVCaptureVideoPreviewLayer und dann habe ich überschrieb die Methode layoutSubviews für diese Ansicht, um sicherzustellen, dass die video-Ebene-Rahmen ist immer richtig eingestellt. Dies ist auch ein guter Ort, um die orientation-Eigenschaft. Das ist, meine UIView aussieht:
InformationsquelleAutor der Antwort Martin
Fand ich endlich eine vernünftige Antwort. Nicht mehr Herumspielen mit "anti-rotation-Animationen" und wie!
Der Schlüssel ist, verwenden Sie eine UIViewController für Ihr Album Vorhören layer (the non-rotating-Ansicht) und ein weiteres für das eigentliche interface. Konfigurieren Sie die Ausrichtungsoptionen für beide shouldAutorotateToInterfaceOrientation: (der code ist in den Antworten oben):
Der wichtige Teil ist, um Ihre Ansichten trennen, indem Sie Sie direkt in das Fenster. Ich Tue dies in der AppDelegate:
Stellt Ihre video-Vorschau im hintergrund, und fügt dann die interface-view über. Die Schnittstelle ist frei, um Anz. autom., ohne die Vorschau zu allen.
Eine wichtige Sache zu beachten: der hintergrund der interface-view sollte transparent sein, sonst blockiert es die Vorschau.
InformationsquelleAutor der Antwort psonice