0

UIViewControllerこのような子階層を持つ があります
ここに画像の説明を入力

次に、このコードを使用してカメラのプレビューを表示します

stillCamera = [[GPUImageStillCamera alloc] init];
stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;

filter = [[GPUImageStretchDistortionFilter alloc] init];
[filter prepareForImageCapture];
[stillCamera addTarget:filter];
GPUImageView *filterview = [[GPUImageView alloc] init];
_preview = filterview;
[filter addTarget:filterview];

[stillCamera startCameraCapture];

variable_previewは、UIViewクラスが"GPUImageView"に設定されているです。上の階層イメージでは、選択されたものです。

ビューを表示すると、 に何も表示されませんでした_preview。ただの空白UIView。私は何を間違えましたか?

_preview = filterview行をに変更するとself.view = filterview、期待どおりに機能しました。である必要がありますself.viewか?

4

2 に答える 2

3

上記のコードの問題は次の行にあると思います。

GPUImageView *filterview = [[GPUImageView alloc] init];
_preview = filterview;

Interface Builder で GPUImageView を定義した場合_preview、IB でそのビューに関連付けたプロパティを指します。上記のコードは、そのポインターを IB で定義されていないビューに置き換えます。したがって、可視ビューがカメラ コンテンツを取得することはありません。

代わりに、これらの2行を削除して使用する必要があります

[filter addTarget:_preview];

View ControllerがアウトレットをNIBに適切に関連付ける機会があり、IBのビューが実際にGPUImageViewであることを確認した後に、上記のセットアップが行われることを確認してください。

于 2014-04-30T16:20:53.200 に答える