Iphone 相机预览在另一个视图中的宽度问题
我在iPhone屏幕的一半添加了摄像头预览Iphone 相机预览在另一个视图中的宽度问题,iphone,objective-c,ios,ios6,Iphone,Objective C,Ios,Ios6,我在iPhone屏幕的一半添加了摄像头预览 -(void) viewDidAppear:(BOOL)animated { AVCaptureSession *session = [[AVCaptureSession alloc] init]; session.sessionPreset = AVCaptureSessionPresetMedium; CALayer *viewLayer = self.vImagePreview.view.layer; NSLog
-(void) viewDidAppear:(BOOL)animated
{
AVCaptureSession *session = [[AVCaptureSession alloc] init];
session.sessionPreset = AVCaptureSessionPresetMedium;
CALayer *viewLayer = self.vImagePreview.view.layer;
NSLog(@"viewLayer = %@", viewLayer);
AVCaptureVideoPreviewLayer *captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
captureVideoPreviewLayer.frame = self.vImagePreview.view.bounds;
[self.vImagePreview.view.layer addSublayer:captureVideoPreviewLayer];
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
NSError *error = nil;
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
if (!input) {
// Handle the error appropriately.
NSLog(@"ERROR: trying to open camera: %@", error);
}
[session addInput:input];
[session startRunning];
}
我在viewDidLoad方法中添加了摄影机视图控制器,并设置其帧:
vImagePreview.view.frame = CGRectMake(0, 44, 320, 179);
但是摄像机的视角不是320。您知道如何通过这种方式设置相机视图的宽度吗?高度可以,但宽度约为100宽。
这就像在这个链接宽度是320,但相机视图是从某种原因更小(宽度)。
![在此处输入图像描述][1]更改相机预览屏幕宽度并进行检查
captureVideoPreviewLayer.frame = self.vImagePreview.view.bounds;
这就是罪魁祸首
您需要使用AVLayerVideoGravityResizeAspectFill
属性添加videoGravity
(指示视频在播放器层边界中的显示方式)
然后指定界限
和最后但并非最不重要的界限,
您需要给出确定矩形中心的x和y坐标。
CGRect bounds=self.vImagePreview.view.layer.bounds;
avLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
avLayer.bounds=bounds;
avLayer.position=CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
从代码captureVideoPreviewLayer.frame=self.vImagePreview.view.bounds中可以看到,预览屏幕为320/179;我也将这个值320/179添加到previewLayer中。这在我第一次设置它时对我有效。但在应用程序进入后台之后,我再次这样做,它被抵消了。