我正在尝试模仿相机应用程序从前到后相机的过渡..它使用UIViewAnimationOptionTransitionFlipFromLeft ..
我目前的方法是使用前置摄像头拍摄照片,切换到后置摄像头,使用后置摄像头拍摄照片,将其加载到两个UIImageViews中并使用图像视图执行转换..(在此过程中隐藏当前的摄像头流)..
问题是,当我从前置摄像头切换到后置摄像头时,cameraView(一个AVCapturePreviewLayer)会在我隐藏它之前立即切换视图(这发生在最后一行的flipCameraToFront中.. [_captureSession commitConfiguration])...
希望这是有道理的,继承人的一些代码我省略了一些,如果你认为它会帮助我知道,我会发布其余部分.
任何帮助将不胜感激,谢谢
//class:RecordViewController
//iVars for this class..
RecordVideoHandler *_recordHandler;
UIImage *_firstImageForFlip;
UIImage *_secondImageForFlip;
UIImageView *_firstImageViewForFlip;
BOOL isUsingFrontInput;
AVCaptureVideoPreviewLayer *_capturePreviewLayer;
UIView *_capturePreviewView;
- (void)doCameraFlip:(UIButton *)sender
{
[_recordHandler addStillImageOutput];
//This method calls imageReturned:(UIImage *)inImage;
[_recordHandler captureAndReturnStillImage];
}
- (void)imageReturned:(UIImage *)inImage{
if(_firstImageForFlip == nil){
[_capturePreviewLayer setFrame:CGRectZero];
_firstImageForFlip = inImage;
_firstImageViewForFlip = [[UIImageView alloc] initWithImage:_firstImageForFlip];
if(isUsingFrontInput)
[_firstImageViewForFlip setTransform:CGAffineTransformMakeScale(-1.0, 1.0)];
[_firstImageViewForFlip setFrame:_capturePreviewView.bounds];
[_capturePreviewView addSubview:_firstImageViewForFlip];
if(isUsingFrontInput){
[_recordHandler flipCameraToBack];
}else{
[_recordHandler flipCameraToFront];
}
[_recordHandler captureAndReturnStillImage];
}else{
_secondImageForFlip = inImage;
[_recordHandler removeStillImageOutput]; …Run Code Online (Sandbox Code Playgroud)