この質問は、ここで尋ねられた既存の質問と非常によく似ていますUIImagePickerControllerCameraDeviceFront は、提示されたソリューションを試すたびにのみ機能しますが、私にとっては機能しませんでした
2 つのビュー コントローラーを使用した最も単純なプロジェクトがあります。青いものでは、UIImagePickerController を含む小さな UIView を表示しています。注: アプリの起動時に前面カメラを表示しています。
次のボタンを押してオレンジ色のビュー コントローラーに移動し、戻るボタンを押して青色のビュー コントローラーに戻ると、UIImagePickerController が前面から背面に反転します。その理由は、忙しいと思い、リアカムに移動するためだと思います。ビューコントローラーの間を行き来し続けると、カメラは前後、前後、前後、前後に反転し続けます...
これが私のコードとスクリーンショットです。何が間違っていますか?
私の *.h で
#import <UIKit/UIKit.h>
@interface v1ViewController : UIViewController <UIImagePickerControllerDelegate>
{
UIImagePickerController *picpicker;
UIView *controllerView;
}
@property (nonatomic, retain) UIImagePickerController *picpicker;
@property (nonatomic, retain) UIView *controllerView;
@end
*.m ファイル (このコードは、青色のビュー コントローラーが表示されている場合にのみ使用されます)
#import "v1ViewController.h"
#import <MobileCoreServices/UTCoreTypes.h>
@implementation v1ViewController
@synthesize picpicker;
@synthesize controllerView;
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
picpicker = [[UIImagePickerController alloc] init];
picpicker.delegate = self;
picpicker.mediaTypes = [NSArray arrayWithObjects:(NSString *)kUTTypeImage, nil];
picpicker.sourceType = UIImagePickerControllerSourceTypeCamera;
picpicker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
picpicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
picpicker.showsCameraControls = NO;
picpicker.navigationBarHidden = NO;
picpicker.wantsFullScreenLayout = NO;
controllerView = picpicker.view;
[controllerView setFrame:CGRectMake(35, 31, 250, 250)];
controllerView.alpha = 0.0;
controllerView.transform = CGAffineTransformMakeScale(1.0, 1.0);
[self.view addSubview:controllerView];
[UIView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationOptionCurveLinear
animations:^{
controllerView.alpha = 1.0;
}
completion:nil
];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[picpicker dismissModalViewControllerAnimated:YES];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[picpicker dismissModalViewControllerAnimated:YES];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}
@end