關于怎么寫自定義相機,我在這里就不多描述了,一搜一大把.
這篇文章只談如何實現手勢調整焦距: ?一開始呢,我使用縮放手勢來做調焦,遇到很多問題不說, 還一直crash. 所以我想到了在用縮放手勢的基礎上不變 , 只是在調整焦距的時候設置好區間 maxValue 和minValue 限制好這兩個值就不再發生crash的情況了, 而且調整焦距還很順暢.
想要實現調整焦距 需先設置AVCaptureVideoPreviewLayer的videoGravity為AVLayerVideoGravityResizeAspectFill.
創建 _videoConnection= [ _Output connectionWithMediaType:AVMediaTypeVideo];
貼上關鍵代碼:
- (void)pinch:(UIPinchGestureRecognizer*)pinch{
if( pinch.state==UIGestureRecognizerStateChanged) {
?pinch.view.transform=CGAffineTransformScale(pinch.view.transform, pinch.scale, pinch.scale);
?value= (pinch.view.frame.size.width - KBOUNDS.width) / (KBOUNDS.width*2);
if(pinch.view.frame.size.width < KBOUNDS.width
? ? ?self.slider.value=0;
}
[self updataUI];
pinch.scale=1;
}
}
[self.previewLayer setAffineTransform:CGAffineTransformMakeScale(1 +value , 1 + value)];?
_videoConnection.videoScaleAndCropFactor= 1 + value;
限制minValue - maxValue = 0-1
其實網上很多用滑塊做變焦的, 但是項目不允許使用滑塊, 所以想了個折中的辦法.