ios – Making use of overlay on previewLayer when set to AVlayerVideoGravityResizeAspect


Hiya can anybody inform me that how am i able to extract solely the video half that’s exhibiting on display when I’m utilizing AVCaptyreVideoPreviewLayer and have set the videoGravity to AVlayerVideoGravityResizeAspect.

Mainly I need to add an overlay solely on high of digicam view,at present it’s protecting tje complete display together with the black borders that seem on high and backside

Attaching pic for referencetextual content

- (void) setUpCameraPreviewLayer {
    self.previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:self.captureSession];
    if (self.previewLayer) {
        self.previewLayer.videoGravity = AVLayerVideoGravityResizeAspect;
        self.previewLayer.connection.videoOrientation = AVCaptureVideoOrientationPortrait;
        dispatch_queue_t globalQueue =  dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
             dispatch_async(globalQueue, ^{
                 [self.captureSession startRunning];
                 dispatch_async(dispatch_get_main_queue(), ^{
                     self.previewLayer.body = self.view.bounds;
                     [self.view.layer addSublayer:self.previewLayer];
                     self.view.layer.backgroundColor = [UIColor blackColor].CGColor;
//                     [self setUpGreyLayer];
                 });
             });
    } 
}

- (void) setUpGreyLayer {
    //Including the greyLayer on high of digicam preview layer
    self.greyLayer = [CALayer layer];
    self.greyLayer.body = self.previewLayer.bounds;
    self.greyLayer.backgroundColor = [UIColor blackColor].CGColor;
    self.greyLayer.opacity = 0.6;

    self.maskLayer = [CAShapeLayer layer];
    CGFloat maskX =  (CGRectGetWidth(self.greyLayer.bounds) - 250.0) / 2.0;
    CGFloat maskY =  (CGRectGetHeight(self.greyLayer.bounds) - 300.0) / 2.0 - (CGRectGetHeight(self.greyLayer.bounds) * 0.1);
    CGRect maskRect = CGRectMake(maskX, maskY, 250.0, 300.0);
    CGFloat smallerDimension = MIN(CGRectGetWidth(maskRect), CGRectGetHeight(maskRect));
    CGFloat cornerRadius = smallerDimension * 8;

    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:maskRect cornerRadius:cornerRadius];
    [maskPath appendPath:[[UIBezierPath bezierPathWithRect:self.greyLayer.bounds] bezierPathByReversingPath]];
    self.maskLayer.path = maskPath.CGPath;

    // Set the masks layer to the greyLayer
    self.greyLayer.masks = self.maskLayer;
    [sel`your text`f.view.layer insertSublayer:self.greyLayer above:(self.previewLayer)];
    
  
}

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest Articles