Frage

Ich habe eine Antwort auf diese gesucht, kann aber mit etwas nicht kommen. Offenbar 3.0 iPhone SDK machte es möglich, dass UIImagePickerController kann im Querformat angezeigt werden - aber ich bin keine Methode zu finden, die dies ermöglichen. Ich würde das denken, wenn die Anwendung in der Landschaft ist standardmäßig wäre es automatisch die Bildsteuerung anpassen, aber das funktioniert nicht für mich.

Vielen Dank für jede Hilfe!

War es hilfreich?

Lösung

Ich habe nicht geprüft, ob dies illegal ist, aber es funktionierte für mich. Wenn Sie die UIImagePickerController beginnen sollen (und Aufenthalt) in Querformat Code:

//Initialize picker

UIImagePickerController * picker = [[UIImagePickerController alloc] init];
   picker.delegate = self;


//set Device to Landscape. This will give you a warning. I ignored it.
//warning: 'UIDevice' may not respond to '-setOrientation:'


[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

//Set Notifications so that when user rotates phone, the orientation is reset to landscape.
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

//Refer to the method didRotate:   
[[NSNotificationCenter defaultCenter] addObserver:self
              selector:@selector(didRotate:)
               name:@"UIDeviceOrientationDidChangeNotification" object:nil];

//Set the picker source as the camera   
picker.sourceType = UIImagePickerControllerSourceTypeCamera;

//Bring in the picker view   
[self presentModalViewController:picker animated:YES];

Das Verfahren didRotate:

- (void) didRotate:(NSNotification *)notification

{
      //Maintain the camera in Landscape orientation
 [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

}

Andere Tipps

Keine Notwendigkeit, Unterklasse; außer Kraft setzen einfach die modalPresentationStyle Eigenschaft.

    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.modalPresentationStyle = UIModalPresentationFormSheet;
    [viewController presentViewController:picker animated:YES completion:NULL];

Wenn Sie nur von der Warnung versuchen, um loszuwerden,

@interface UIDevice ()
    -(void)setOrientation:(UIDeviceOrientation)orientation;
@end

Ich habe eine UIImagePicker Klasse im Querformat entwickelt. Funktioniert hervorragend für Anwendungen, die ich entwickelt habe: Hoffnung es für Sie funktioniert auch:

GitHub: https://github.com/imaginaryunit/iOSLandscapeThreadedImagePicker.git

Ich habe eine All-Landschaft App zu verwenden UIImagePickerController. Bitte zu beachten, dass, wenn Sie UIImagePickerController im Querformat-Modus aufrufen, Ihre Anwendung möglich ist, von Apple Review-Team abgelehnt.

erdacht ich eine einfache Arbeit um dieses Problem, das die shouldAutoRotate Delegierten nutzen machen. Apple genehmigt diese Methode für ein All-Landschaft App.

Siehe hier für die Details und herunterladbare Voll Projekt Quellcode.

Erstellen Sie eine Kategorie von UINavigationController und fügen Sie diese Verfahren

- (BOOL)shouldAutorotate
{
    return NO;
}

Subclass UIImagePickerController und Überschreibung modalPresentationStyle wie folgt:

- (UIModalPresentationStyle)modalPresentationStyle
{
    if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
    {
        return UIModalPresentationFormSheet;
    }

    return [super modalPresentationStyle];
}

Die Bild Picker ist ein Form-Blatt jetzt und nicht mehr im Vollbild-Modus, aber es sieht gut aus in der Landschaft-Modus. Dies sollte total App-Store-sicher sein.

Dies funktioniert für die Galerie, nicht zu arbeiten.

Ich löste dieses Problem wie folgt: Nach jeder Änderung der Orientierung, ich einfach neu zu erstellen Picker. Versuche dies. Unterschiedlich ist zu krumm ...

Ich entwickle eine Klasse, die ihre beste Arbeit versucht, im Landschaftsmodus. Check it out auf GitHub: RACameraController

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