5

私のIOSアプリでは、カメラを開くと、カメラビューの上に画像を配置しました。ポートレートモードで見栄えがします。しかし、ランドスケープモードに変更すると、奇妙に見えます。UIImagePickerControllerだから私はポートレートモードでロックしたいと思います。

以下は、UIイメージピッカーコントローラーの私のコードです

UIImagePickerController *imgPkr = [[UIImagePickerController alloc] init];
imgPkr.delegate = self;
imgPkr.sourceType = UIImagePickerControllerSourceTypeCamera;

ポートレートモードでロックする方法...

4

8 に答える 8

3

または、UIImagePickerController をサブクラス化できます。

新しい UIImagePickerController クラスを作成し、これらの行を追加するだけです。

- (BOOL)shouldAutorotate{
return NO;
}

カメラを使用するクラスにインポートし、デフォルトの UIImagePickerController を使用する代わりに、作成したクラスを使用します。

カメラ自体の自動回転が停止するはずです。

于 2013-11-26T03:35:55.220 に答える
2

私にとってうまくいった唯一の解決策はカテゴリでしたが、別の方法も追加する必要がありました。

#import "UIImagePickerController+NoRotate.h"

@implementation UIImagePickerController (NoRotate)

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}
@end

乾杯!

于 2013-03-21T19:41:24.773 に答える
2

これは最善の解決策ではありませんが、機能します。

AppDelegate *appDelegate = (AppDelegate *) [[UIApplication sharedApplication] delegate];
[appDelegate.window addSubview:cameraOverlay];
imgPicker.cameraOverlayView = appDelegate.window.superview;

背景のカメラは回転しますが、オーバーレイ ビューは回転しません。それがあなたのために働くことを願っています

于 2012-04-23T14:28:58.543 に答える
0

このコードをView Controllerに書くだけです

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations.
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
于 2012-01-20T11:22:12.633 に答える
0
-(BOOL)shouldAutorotate {
return NO;}

ビューコントローラーでこれを試してください。これは私にとってはうまくいきました。注: これは ios6.0 以降用です。

于 2013-10-09T08:52:38.700 に答える
0

次のように、カテゴリを追加してそのメソッドUIImagePickerControllerをオーバーライドします。shouldAutoRotateToInterfaceOrientation

@implementation UIImagePickerController (NoRotate)

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end
于 2012-01-20T11:59:02.960 に答える