私は静的フレームワークをプログラムしました。その中に、AVCaptureSession でカメラを設定する ViewfinderViewController というクラスがあります。この ViewController は、AVCaptureVideoPreviewLayer を独自のビューのレイヤーにサブレイヤーとして追加します。
// code in ViewfinderViewController.m
previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:captureSession];
previewLayer.frame = self.view.bounds;
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
[self.view.layer addSublayer:previewLayer];
ViewfinderViewController はまた、いくつかのビデオ処理を行い、処理されたフレームの 1 つに関心のあるものが見つかった場合、または見つからなかった場合に備えて、いくつかのデリゲート メソッドに登録するフレームワークのユーザーを提供します。
実際のアプリケーションの viewDidLoad メソッドで、ViewfinderViewController のインスタンスを作成し、そのフレームを設定して、そのビューをサブビューとして追加します。
// code in the app's view controller viewDidLoad method
ViewfinderViewController *vfVC = [[ViewfinderViewController alloc] init];
vfVC.view.frame = self.view.bounds;
[self.view addSubview:vfVC.view];
回転を無視する限り、これは問題なく機能します(これまでは行っていました)。私の主な問題は、 ViewfinderViewController.view がフレームのサイズを変更することですが、 AVCaptureVideoPreviewLayer はそうではありません。私は少し困惑しています: superLayer に対応するビューが正しくサイズ変更されるため、previewLayer も自動的にサイズ変更されるべきではありませんか?
何か案は?喜んでより多くの情報を提供しますが、質問を短くするために、今のところこれ以上説明しません。ありがとう。