我有一个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];变量_preview是一个将类设置为_preview的UIView。在上面的层次图上,它是所选的。
当我显示视图时,它在_preview上什么也没有显示。只是一个空白的UIView。我做错什么了?
当我将行_preview = filterview更改为self.view = filterview时,它正常工作。一定要是self.view吗
发布于 2014-04-30 16:20:53
我认为以上代码的问题就在下面几行:
GPUImageView *filterview = [[GPUImageView alloc] init];
_preview = filterview;如果您已经在Interface中定义了GPUImageView,那么_preview将指向您在IB中与该视图关联的属性。上面的代码将指针替换为一个不是在IB中定义的视图。因此,您的可见视图将永远不会得到您的相机内容。
您需要移除这两行并使用
[filter addTarget:_preview];确保您的上述设置是在您的视图控制器有机会正确地将您的网点与您的NIB相关联之后,并且IB中的视图确实是一个GPUImageView。
发布于 2014-04-30 15:25:28
您几乎已经有了,首先以编程的方式尝试一下,因为我有一个非常类似的情况正在发生,它正在工作:
GPUImageView *previewView = [[GPUImageView alloc] initWithFrame:CGRectMake(x, y, w, h)];filter = [[GPUImageStretchDistortionFilter alloc] init];[stillCamera addTarget:filter];[stillCamera addTarget:previewView];编辑:
太傻了!现在需要将previewView添加到实际视图中!试试这个:
[self.view addSubview:previewView];试试看,GPUImage一开始可能有点令人困惑,但经过一些改进,它就能工作了!
https://stackoverflow.com/questions/23384831
复制相似问题