作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Swift 4/iOS 11/Xcode 9.1 中的 AVFoundation 框架制作自定义相机 View Controller
我的 setUpCaptureSession 代码:(归功于 letsbuildthatapp.com 的 brian voong,我遵循了他的 IG/firebase 教程并广泛使用了他的作品!)
fileprivate func setupCaptureSession() {
let captureSession = AVCaptureSession()
//setup inputs
let captureDevice = AVCaptureDevice.default(for: AVMediaType.video)
do {
let input = try AVCaptureDeviceInput(device: captureDevice!)
if captureSession.canAddInput(input) {
captureSession.addInput(input)
}
} catch let err {
debugPrint(err)
}
//setup outputs
if captureSession.canAddOutput(output) {
captureSession.addOutput(output)
}
//setup output preview
let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer.frame = photoPreView.frame
view.layer.addSublayer(previewLayer)
captureSession.startRunning()
}
photoPreView
是我手动添加到 Storyboard中的 View ,宽高比为 1:1。我的问题在下面的屏幕截图中可见:
捕获 session 确实在 photoPreView.frame
中,但我希望捕获 session 填满整个区域并放大,就像原生 iOS 相机的方形模式如何工作,或者如何Instagram 的照片捕捉也会出现。
最佳答案
在你的捕获层你应该设置...
previewLayer.videoGravity = .resizeAspectFill
关于ios swift 方形照片取景器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47557265/
我是一名优秀的程序员,十分优秀!