2016-01-31 4 views
0

Я пытаюсь загрузить камеру в пользовательский CGRect, но я не могу это сделать, так как кажется, что представление связано с аспектом камеры. Это код, я использую:Отображение камеры в пользовательской рамке

AVCaptureSession *session = [[AVCaptureSession alloc] init]; 
AVCaptureDevice *videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
if (videoDevice) 
{ 
    NSError *error; 
    AVCaptureDeviceInput *videoInput = [AVCaptureDeviceInput deviceInputWithDevice:videoDevice error:&error]; 
    if (!error) 
    { 
     if ([session canAddInput:videoInput]) 
     { 
      [session addInput:videoInput]; 
      AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session]; 
      previewLayer.frame = self.view.bounds; 
      CGFloat x = self.view.bounds.origin.x; 
      CGFloat y = self.view.bounds.origin.y; 
      CGFloat width = self.view.bounds.size.width; 
      CGFloat height = 206; 
      CGRect newFrame = CGRectMake(x, y, width, height); 
      previewLayer.frame = newFrame; 
      [self.view.layer addSublayer:previewLayer]; 
      [session startRunning]; 
     } 
    } 
} 

Это кадр, что приложение в настоящее время отображения:

enter image description here

Но мне нужно, чтобы быть оформлена следующим образом:

enter image description here

I не может понять, как «разблокировать» рамку камеры или отрегулировать ее. Могу ли я получить желаемый результат без снижения качества изображения, и если да - как?

+0

ли вы устранить проблему? – metronic

+0

@metronic Эй, спасибо за ваш ответ. Я еще не успел - получил немного поздно прошлой ночью, и у меня нет громоотвода со мной в школе. Я постараюсь как можно скорее вернуться домой, а это примерно через 2-3 часа. Я сразу отправлю отчет после попытки – Erik

+0

@metronic yup, что исправил его! Благодаря! – Erik

ответ

1

Добавьте эту строку в конце кода:

previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;