IOSでカスタムカメラエクスペリエンスを作成しようとしていますが、次のコードスニペットは私が入手した範囲です。基本的に私は通常のカメラビューが必要です(つまり、キャプチャ、フラッシュ、グリッド、前面/背面、キャンセル)。しかし、通常のカメラと私のカメラの唯一の違いは、プレビューサーフェスに正方形が必要なことです。長方形ではありません。そして、表示されるのは、トリミングが不要なもの(WYSIWYG)です。ユーザーが最初に正方形の写真を撮ったので。
ライブラリも調べています https://github.com/danielebogo/DBCamera ですが、自分の目的に合わせてカスタマイズする方法がわかりません。何か助けはありますか?ありがとう。
私のコードSO遠い:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//Capture Session
AVCaptureSession *session = [[AVCaptureSession alloc]init];
session.sessionPreset = AVCaptureSessionPresetPhoto;
//Add device
AVCaptureDevice *device =
[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
//Input
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
if (!input)
{
NSLog(@"No Input");
}
[session addInput:input];
//Output
AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
[session addOutput:output];
output.videoSettings =
@{ (NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };
//Preview Layer
AVCaptureVideoPreviewLayer *previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
UIView *myView = self.view;
previewLayer.frame = myView.bounds;
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[self.view.layer addSublayer:previewLayer];
//Start capture session
[session startRunning];
}
これは、Xcodeのシングルビュープロジェクトにある唯一のカスタムコードです。
UIImagePickerController
に固執してカスタマイズするか、AVFoundation
を使用して独自に作成するかの、2つのオプションがあります。
UIImagePickerController
はかなりのカスタマイズオプションを提供し、この同様のスレッドにはそれに関するいくつかの良い情報があります: link 。
それでも自分で作成したい場合は、Appleドキュメントにアクセスして、AVCam
: link というこのデモプロジェクトを確認することをお勧めします。ただし、 、おそらく必要とされるよりもはるかに詳細なので、このビデオチュートリアルもお勧めします: リンク 。
最後のオプションを選択する場合は、「実際のカメラ」をpreviewLayer
のフレームに合わせるために、videoGravity
にAVCaptureVideoPreviewLayer
を設定できることをお伝えしておきます。 AVLayerVideoGravityResizeAspectFill
へ。
カスタムカメラを使用するのは少し面倒ですが、アプリのエクスペリエンスを実際にカスタマイズできることを考えると、利益が得られます。
これを行う最も簡単な方法は、 TGCameraViewController を使用することです。
このTGCameraViewController
を使用して、カメラビュー全体を編集できます。また、次の機能を提供します。-
また、 AVCamManual:手動キャプチャを使用するためのAVCamの拡張 ドキュメントを参照して、独自のカスタムカメラを作成することもできます。