0

UIViewControllerボタンがタップされた後にモーダルに表示されることを意図したプライマリとセカンダリのアプリケーションがあります。

両方とも、サブビューとして追加された対応するUIViewControllers独自のものを持っています。この時点まではすべて正常に動作します。GPUImageStillCameraGPUImageView

ただし、モーダル表示に移動してUIViewController閉じると、プライマリ コントローラーのカメラは、2 番目のコントローラーを表示する前に残した最後のフレームでフリーズしたままになります。

私が呼ぶものPrimaryViewController

-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];

    [_stillCamera resumeCameraCapture];
}

-(void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];

    [_stillCamera pauseCameraCapture];
}

私が私の中で呼ぶものSecondaryViewController

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    [_stillCamera resumeCameraCapture];
}

-(void)viewWillDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];

    [_stillCamera stopCameraCapture];
}

メソッドが起動することは 100% 確信しています (ブレークポイントでチェック)。論理的には、最初のカメラは再度表示されたらプレビューを再開する必要がありますが、そうではありません-最後のフレームでフリーズします(pauseCameraCaptureメソッドが呼び出されたとき)。強制的に更新する方法はありますか(再作成する以外に) ? 確認しましたが、割り当ても解除されていません。

私は何が欠けていますか?

4

1 に答える 1

0

最終的に、単一のインスタンスを維持する Singleton クラスを作成しましたGPUImageStillCamera。また、すべてのフィルターを保持し、アプリの状態が変化したときに一時停止/再開を処理します。

シングルトンは、インスタンスを返しGPUImageViewてカメラをプレビューし、不要になったときに破棄することもできます。

現在のバージョンのフィルターなしではキャプチャできないため、ダミー シェーダー (付属) を使用します。GPUImage

ここで MHCameraManagerを参照してください。

于 2014-09-30T16:32:01.317 に答える