ich eine UIImagePickerController innerhalb eines UIPopoverController bin mit der perfekt mit iOS6 arbeitet. Bei iOS 7 wird das "Vorschau" -Bild gedreht, das gezeigt wird, um das Bild zu erfassen, aber wenn ich ein Bild mache, wird es korrekt gespeichert. DieseiPad iOS7 - UIImagePickerController in UIPopoverController hat falschen Vorschaubild
ist, wie ich meine Picker erhalten:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.mediaTypes = [NSArray arrayWithObjects:
(NSString *) kUTTypeImage,
nil];
imagePicker.allowsEditing = NO;
Und es zu einem popover Controller hinzufügen:
self.imagePickerPopOver = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[self.imagePickerPopOver presentPopoverFromRect:CGRectMake(aPosViewA.x, cameraButton_y, 100.0, 30.0) inView:self.detailViewController.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
Die Berechnungen sind für die Schaltfläche Position in einem UIScrollView bei der die popover zeigen korrekte Position:
presentPopoverFromRect:CGRectMake(aPosViewA.x, cameraButton_y, 100.0, 30.0)
Ich glaube nicht, dass das Problem dort liegt, wie ich o versucht habe ut mehrere Kombinationen.
Ich habe auch versucht, das Bild im Vollbild-Modus zu erfassen, aber die App ist nur zu verwenden, Landscape-Modus erlaubt. Wenn das Bild im Hochformat aufgenommen wird und die modale Ansicht nicht angezeigt wird, bleibt die App auch im Hochformat. Ich konnte keine Möglichkeit finden, den UIImagePickerController daran zu hindern, in den Hochformat-Modus zu wechseln oder die App zurück in den Querformat-Modus zu versetzen, wenn die modale Ansicht beendet wurde.
UPDATE
Ich habe die Antwort von here genommen und einen Schritt weiter gekommen.
ich verwandle die Ansicht nach den Picker zu schaffen und vor dem popover zeigt:
switch ([UIApplication sharedApplication].statusBarOrientation) {
case UIInterfaceOrientationLandscapeLeft:
self.imagePicker.view.transform = CGAffineTransformMakeRotation(M_PI/2);
break;
case UIInterfaceOrientationLandscapeRight:
self.imagePicker.view.transform = CGAffineTransformMakeRotation(-M_PI/2);
break;
default:
break;
}
die so lange funktioniert, wie ich nicht um das iPad drehen sich. Denn die Ich melde mich für die Ausrichtung geändert Veranstaltung:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];
und die Picker Ansicht ändern:
- (void)orientationChanged:(NSNotification *)notification{
if (self.imagePicker) {
switch ([UIApplication sharedApplication].statusBarOrientation) {
case UIInterfaceOrientationLandscapeLeft:
self.imagePicker.view.transform = CGAffineTransformMakeRotation(M_PI/2);
break;
case UIInterfaceOrientationLandscapeRight:
self.imagePicker.view.transform = CGAffineTransformMakeRotation(-M_PI/2);
break;
default:
break;
}
}
}
verbleibendes Problem: Wie ich am Anfang geschrieben, wenn das Bild aufgenommen wurde, war es korrekt angezeigt, um es zu akzeptieren oder zu verwerfen. Dies ist jetzt auch transformiert. Irgendwie muss ich wissen, wann das Bild aufgenommen wurde und es zurück verwandeln.
UND, das ist wirklich ein hässlicher Hack und wird wahrscheinlich nicht mit dem nächsten iOS Update funktionieren. Hat jemand eine Idee, wie man das sauberer umsetzen kann?
UPDATE 2
Auch die böse war, habe ich eine saubere Lösung gefunden, die mein Problem löst, aber ist nicht die Antwort auf die erste Frage in Bezug auf eine imagepicker in einem popover-Controller, der von Apple ist nicht zu empfehlen, aber dürfen.
Ich habe jetzt die UIImagePickerController wie diese subclassed:
@implementation QPImagePickerController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
@end
und ich bin mit dem imagepicker im Vollbild statt in einem popover. Getestet bisher in iOS7.
Ich bin mit genau dem gleichen Problem konfrontiert. Ich kann nicht glauben, dass das kein relevanteres Thema ist - wie bricht es nicht mehr Apps? – daveMac
Genau dasselbe Problem, wird dies nicht im nächsten Update behoben werden? – user1838169
Es sieht so aus, als ob das gleiche Problem die Facebook-App von ios7 betrifft, die eine Popup-Kamera benutzt. – Mike