OK, also habe ich es geschafft, dies zu sortieren. Zu beachten ist, dass die Klasse UIImagePickerController den Hochformatmodus nur gemäß Apple documentation unterstützt.
Um die Rotation zu erfassen, ist die willRotateToInterfaceOrientation
hier nutzlos, Sie müssen also Meldungen verwenden. Auch das Festlegen von Einschränkungen bei der automatischen Layouteinstellung zur Laufzeit ist nicht der richtige Weg.
Im AppDelegate didFinishLaunchingWithOptions
Sie aktiviert Rotation Benachrichtigungen müssen:
// send notification on rotation
[[UIDevice currentDevice]beginGeneratingDeviceOrientationNotifications];
In viewDidLoad
Verfahren des cameraOverlayView UIViewController
folgendes hinzufügen:
//add observer for the rotation notification
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];
schließlich die orientationChanged:
Methode zum cameraOverlay hinzufügen UIViewController
- (void)orientationChanged:(NSNotification *)notification
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
double rotation = 0;
switch (orientation) {
case UIDeviceOrientationPortrait:
rotation = 0;
break;
case UIDeviceOrientationPortraitUpsideDown:
rotation = M_PI;
break;
case UIDeviceOrientationLandscapeLeft:
rotation = M_PI_2;
break;
case UIDeviceOrientationLandscapeRight:
rotation = -M_PI_2;
break;
case UIDeviceOrientationFaceDown:
case UIDeviceOrientationFaceUp:
case UIDeviceOrientationUnknown:
default:
return;
}
CGAffineTransform transform = CGAffineTransformMakeRotation(rotation);
[UIView animateWithDuration:0.4 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
self.btnCancel.transform = transform;
self.btnSnap.transform = transform;
}completion:nil];
}
Der obige Code wendet die Rotationstransformation auf die 2 UIButtons an, die ich in diesem Fall btnCancel und btnSnap verwende. Dadurch erhalten Sie beim Drehen des Geräts den Kamera-App-Effekt. Ich bin immer noch eine Warnung in der Konsole <Error>: CGAffineTransformInvert: singular matrix.
nicht sicher, warum dies geschieht, aber es ist etwas mit der Kamera-Ansicht zu tun.
Hoffe, dass die oben hilft.
fragte die gleiche Frage einige Zeit vor - http://stackoverflow.com/questions/15377120/uiimagepickercontroller-record-video-with-landscape-orientation leider immer noch eine nette Antwort nicht hat. –
Nun, ich habe mit Automatische Anordnung Einschränkungen in Xcode fummelte herum, aber sie sind eindeutig bestimmte Elemente der aktuellen Ausrichtung Boden zu verankern, statt der ursprünglichen Porträt unten. Mein nächstes wird versucht werden, um zu versuchen, die contraints zur Laufzeit mit dem 'set - (void) willRotateToInterfaceOrientation: (UIInterfaceOrientation) toInterfaceOrientation Dauer: (NSTimeInterval) duration' Haben Sie Anregungen obwohl @Aaron? – pechar