web-dev-qa-db-ja.com

ランドスケープのUIImagePickerController

私はこれに対する答えを探していましたが、何も思いつきません。どうやら、iPhone SDK 3.0ではUIImagePickerControllerを横向きモードで表示できるようになりましたが、これを可能にするメソッドは見つかりませんでした。アプリケーションがデフォルトで横向きになっていると、イメージコントローラーが自動的に調整されると思いますが、それは私にはうまくいきません。

助けてくれてありがとう!

23
PF1

これが違法かどうかは確認していませんが、うまくいきました。 UIImagePickerControllerを横向きの方向コードで開始(および維持)する場合:

//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];

メソッドdidRotate:

- (void) didRotate:(NSNotification *)notification

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

}
13
erastusnjuki

サブクラス化する必要はありません。 modalPresentationStyleプロパティをオーバーライドするだけです。

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

警告を取り除く必要がある場合は、

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

ランドスケープモードでUIImagePickerクラスを開発しました。私が開発したアプリケーションに最適です。あなたにも機能することを願っています。

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

3
imaginaryunit

UIImagePickerControllerを使用した全風景アプリもあります。ランドスケープモードでUIImagePickerControllerを呼び出すと、アプリがAppleレビューチームによって拒否される可能性があることに注意してください。

この問題を回避する簡単な回避策を考案しました。これは、shouldAutoRotateデリゲートを利用します。 Appleは、すべてのランドスケープアプリに対してこのメ​​ソッドを承認します。

詳細およびダウンロード可能な完全なプロジェクトソースコードについては、 ここ を参照してください。

2
GeneCode

INavigationController のカテゴリを作成し、このメソッドを追加します

- (BOOL)shouldAutorotate
{
    return NO;
}
2

UIImagePickerControllerをサブクラス化し、modalPresentationStyleを次のようにオーバーライドします。

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

    return [super modalPresentationStyle];
}

イメージピッカーはフォームシートになり、フルスクリーンモードではなくなりましたが、ランドスケープモードでは見栄えがします。これは完全にアプリストアセーフである必要があります。

これは、写真を撮るためではなく、ギャラリーのために機能します。

2
RhodanV5500

この問題を次のように解決しました。向きを変えるたびに、ピッカーを簡単に再作成します。これを試して。違って曲がりすぎています...

0
alexandrmoroz

ランドスケープモードで動作するように最善を尽くすクラスを開発しています。 GitHubでチェックしてください: RACameraController

0
reggian