IOS压缩放大/缩小

IOS压缩放大/缩小,ios,uipinchgesturerecognizer,Ios,Uipinchgesturerecognizer,我正在尝试在摄影机视图上实现收缩放大/缩小 到目前为止,我有以下代码: - (void) setZoom:(float)zoomValue{ NSError *error = nil; NSLog(@"Current zoom level %f " , zoomValue); if([_device lockForConfiguration:&error]){ if(zoomValue > 1 ){ if(zoomValue < _device.a

我正在尝试在摄影机视图上实现收缩放大/缩小

到目前为止,我有以下代码:

- (void) setZoom:(float)zoomValue{

NSError *error = nil;
NSLog(@"Current zoom level %f  " , zoomValue);
if([_device lockForConfiguration:&error]){
    if(zoomValue > 1 ){
        if(zoomValue < _device.activeFormat.videoMaxZoomFactor){
            _device.videoZoomFactor = zoomValue;

            [_device unlockForConfiguration];
        }else{
            _device.videoZoomFactor = _device.activeFormat.videoMaxZoomFactor;
            //self.currentZoom = _device.activeFormat.videoMaxZoomFactor;
            [_device unlockForConfiguration];

        }
    }else if(zoomValue < 1){
        _device.videoZoomFactor = 1;
        //self.currentZoom = 1;
        [_device unlockForConfiguration];
    }
}

}
我遇到的问题很少:

  • 相机有时会冻结,我认为这是因为传递的变焦值无效,但无法理解
  • 每次我启动“收缩”手势时,它都会从正常大小开始,然后逐渐增大,因此缩小功能实际上不起作用
  • 如果有任何人有任何工作代码,最好看看并弄清楚整个功能,或者欢迎任何其他建议

    谢谢

    -(IBAction)handlePinchWithGestureRecognizer:(UIPinchGestureRecognizer *)pinchGestureRecognizer {
    
        if ( pinchGestureRecognizer.state == UIGestureRecognizerStateBegan )
        {
            _zoomGestureCurrentZoom = pinchGestureRecognizer.scale;
        }
        else if ( pinchGestureRecognizer.state == UIGestureRecognizerStateChanged )
        {
            // we have to jump through some hoops to clamp the scale in a way that makes the UX intuitive
            float scaleDeltaFactor = pinchGestureRecognizer.scale/_zoomGestureLastScale;
            float currentZoom = self.zoomGestureCurrentZoom;
            float newZoom = currentZoom * scaleDeltaFactor;
            // clamp
            float kMaxZoom = 6.0f;
            float kMinZoom = 1.0f;
            newZoom = MAX(kMinZoom,MIN(newZoom,kMaxZoom));
            //self.view.transform = CGAffineTransformScale([[gestureRecognizer view] transform], newZoom, newZoom);
            [_imageCameraSource setZoom:newZoom];
            // store for next time
            self.zoomGestureCurrentZoom = newZoom;
         }
    }