AVCaptureDevice 調整焦距

關于怎么寫自定義相機,我在這里就不多描述了,一搜一大把.

這篇文章只談如何實現手勢調整焦距: ?一開始呢,我使用縮放手勢來做調焦,遇到很多問題不說, 還一直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

其實網上很多用滑塊做變焦的, 但是項目不允許使用滑塊, 所以想了個折中的辦法.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • *7月8日上午 N:Block :跟一個函數塊差不多,會對里面所有的內容的引用計數+1,想要解決就用__block...
    炙冰閱讀 2,542評論 1 14
  • VLC的集成和使用 VLC介紹 VLC Media Player (VideoLAN) 為 Windows、Lin...
    Pocket閱讀 19,889評論 75 66
  • 轉自:http://www.code4app.com/blog-866962-1317.html1、設置UILab...
    MMOTE閱讀 1,671評論 1 1
  • 雷蒙德卡福 當我們討論愛情時我們討論什么 大教堂 米蘭昆德拉 不能承受的生命之輕 尼采 查拉如斯特拉如是說 梭羅 ...
    一1閱讀 197評論 0 1
  • 記得三年前第一次來蘇州正值桂花盛開,陽光下朵朵桂花爭奇斗艷開得好生熱鬧,蜜蜂在上面辛勤地采蜜。微風吹來頓時整個空氣...
    東語西言閱讀 338評論 0 1