Я работаю над использованием пользовательской камеры, и недавно обновился до Xcode 8 beta вместе с Swift 3. У меня изначально было это:
var stillImageOutput: AVCaptureStillImageOutput?
Однако теперь я получаю предупреждение:
"AVCaptureStillImageOutput" устарел в iOS 10.0: вместо этого используйте AVCapturePhotoOutput
Поскольку это довольно новый, я не видел много информации об этом. Вот мой текущий код:
var captureSession: AVCaptureSession?
var stillImageOutput: AVCaptureStillImageOutput?
var previewLayer: AVCaptureVideoPreviewLayer?
func clickPicture() {
if let videoConnection = stillImageOutput?.connection(withMediaType: AVMediaTypeVideo) {
videoConnection.videoOrientation = .portrait
stillImageOutput?.captureStillImageAsynchronously(from: videoConnection, completionHandler: { (sampleBuffer, error) -> Void in
if sampleBuffer != nil {
let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)
let dataProvider = CGDataProvider(data: imageData!)
let cgImageRef = CGImage(jpegDataProviderSource: dataProvider!, decode: nil, shouldInterpolate: true, intent: .defaultIntent)
let image = UIImage(cgImage: cgImageRef!, scale: 1, orientation: .right)
}
})
}
}
Я попытался посмотреть AVCapturePhotoCaptureDelegate
, но я не совсем уверен, как его использовать. Кто-нибудь знает, как это использовать? Спасибо.