Skip to content

Instantly share code, notes, and snippets.

@sturdysturge
Created May 9, 2022 20:01
Show Gist options
  • Save sturdysturge/40762b28bf49ae93e4c23d2105506948 to your computer and use it in GitHub Desktop.
Save sturdysturge/40762b28bf49ae93e4c23d2105506948 to your computer and use it in GitHub Desktop.
import AVFoundation
import UIKit.UIView
extension AVCaptureVideoPreviewLayer {
static func createAsSublayer(of superView: UIView, session: AVCaptureSession) {
let previewLayer = Self.init(session: session)
previewLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
let rootLayer = superView.layer
previewLayer.frame = rootLayer.bounds
rootLayer.addSublayer(previewLayer)
}
}
extension UIDeviceOrientation {
var imageOrientation: CGImagePropertyOrientation {
switch self {
case .portraitUpsideDown: return .left
case .landscapeLeft: return .upMirrored
case .landscapeRight: return .down
default: return .up
}
}
}
extension AVCaptureDeviceInput {
static var defaultDevice: AVCaptureDeviceInput {
do {
guard let videoDevice = AVCaptureDevice
.DiscoverySession(
deviceTypes: [.builtInWideAngleCamera],
mediaType: .video,
position: .back)
.devices
.first else { fatalError("No capture device found") }
return try AVCaptureDeviceInput(device: videoDevice)
} catch {
fatalError(String(describing: error))
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment