wunderlist webapp sesión log iniciar ingresar google faq iphone ios4 avfoundation

iphone - sesión - wunderlist webapp



AVCaptureVideoPreviewLayer (6)

AVCaptureVideoPreviewLayer *avLayer = [AVCaptureVideoPreviewLayer layerWithSession:session]; avLayer.frame = self.view.frame; [self.view.layer addSublayer:avLayer];

Uso AVCaptureVideoPreviewLayer para mostrar video en la vista. Pero la vista del video no llenó la pantalla completa del iPhone4 (dos barras grises en el lado derecho e izquierdo)

Quiero que el video se llene a pantalla completa. ¿Cómo puedo lidiar con eso? ¡Muchas gracias!


La respuesta aceptada por Swift 4:

let bounds = view.layer.bounds self.cameraLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill self.cameraLayer.bounds = bounds self.cameraLayer.position = CGPoint(x:bounds.midX, y:bounds.midY) self.cameraView?.layer.addSublayer(self.cameraLayer)


La respuesta de @ fitzwald le dará el resultado deseado, pero hay una manera más fácil. Lo que sucede es que el preajuste de sesión se establece de forma predeterminada en Video - Alto (que no coincide con la relación de aspecto de la pantalla). Se puede lograr una vista previa de pantalla completa (como en Camera.app) utilizando el ajuste preestablecido de foto. Simplemente establecer

session.sessionPreset = AVCaptureSessionPresetPhoto;

antes de comenzar su sesión Aquí está la documentación de Apple si desea obtener más información.


Por el bien de Google, esta es la respuesta aceptada pero usando Swift que es ligeramente diferente:

var bounds:CGRect = self.view.layer.bounds previewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill previewLayer?.bounds = bounds previewLayer?.position = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds))


Tal vez esto lo resuelve?

CGRect bounds=view.layer.bounds; avLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; avLayer.bounds=bounds; avLayer.position=CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));


Una posible causa de confusión es que AVCaptureVideoPreviewLayer es una capa de CoreAnimation y en todas las respuestas anteriores se está posicionando estáticamente (por ejemplo, sin restricciones) relativa a una vista. Si usa restricciones para diseñar la vista, estas no cambian automáticamente el tamaño de la capa de vista previa.

Esto significa que no puede configurar la capa de vista previa en viewDidLoad ya que el diseño aún no se ha realizado y la capa de vista previa tendrá el mismo tamaño que en el Generador de interfaces.

En su lugar, anule viewDidLayoutSubviews en su ViewController y coloque allí la capa de vista previa.

- (void)viewDidLayoutSubviews { CGRect bounds=view.layer.bounds; avLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; avLayer.bounds=bounds; avLayer.position=CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds)); }


Utilizo el siguiente código para lograr esto

previewLayer.frame = CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height); previewLayer.orientation = [[UIDevice currentDevice] orientation]; previewLayer.contentsGravity = kCAGravityResizeAspectFill;