64 votes

AVCaptureVideoPreviewLayer

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

J'utilise AVCaptureVideoPreviewLayer pour afficher une vidéo sur la vue. Mais la vidéo n'a pas rempli l'écran de l'iPhone4 (deux barres grises à droite et à gauche).

Je veux que la vidéo se remplisse en plein écran. Comment puis-je m'en occuper? Merci beaucoup!

entrez la description de l'image ici

190voto

flitzwald Points 12163

Peut-être que cela résout le problème?

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

11voto

eschurter Points 273

@fitzwald réponse vous donnera le résultat souhaité, mais il ya un moyen plus facile. Ce qui se passe, c'est que la session de paramètres par défaut pour la Vidéo Haute (qui ne correspond pas au rapport d'aspect de l'écran). Un aperçu en plein écran (comme dans la Caméra.app) peut être obtenue en utilisant la Photo de préréglage. Réglez simplement

session.sessionPreset = AVCaptureSessionPresetPhoto;

avant de commencer votre séance. Voici la Documentation d'Apple si vous voulez en savoir plus.

9voto

Raj Points 955

Pour Google, voici la réponse acceptée, mais en utilisant Swift, qui est légèrement différente:

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

1voto

rajuptb Points 13

J'utilise le code suivant pour y parvenir

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X