CameraPreviewController 1.4.0

CameraPreviewController 1.4.0

LangLanguage SwiftSwift
License MIT
ReleasedLast Release Jun 2017
SwiftSwift Version 3.0
SPMSupports SPM

Maintained by HFCoreUI.

Depends on:
TinyLog>= 0
GPUImage>= 0
PureLayout>= 0

  • By
  • DragonCherry



To run the example project, clone the repo, and run pod install from the Example directory first.

I’m writing this since I couldn’t find a open source with complete basic source to start develop camera application from, and is based on GPUImage library inside.

This example contains the following features.

  1. front camera preview / still capture / video capture

  2. back camera preview / still capture / video capture

  3. flipping camera

  4. torch control

  5. tap to focus

  6. add/remove filter

  7. face detection

  8. pinch to zoom in/out

I’m going to add more features that every camera application must have.

Please don’t hesitate to contribute on this project. Any advice and suggestions will be greatly appreciated.


  • To take photo,
takePhoto({ image in
    let photoVC = PhotoViewController()
    photoVC.image = image
    self.present(photoVC, animated: true, completion: nil)
  • To change camera,
switch cameraPosition {
    // do something
  • To control torch,
torchMode = .on
torchMode = .off
torchMode = .auto
  • To add, remove filters
add(filter: filter)
  • To detect face,
// set true somewhere
isFaceDetectorEnabled = true

// handle result
func cameraPreview(_ controller: CameraPreviewController, detected faceFeatures: [CIFaceFeature]?, aperture: CGRect, orientation: UIDeviceOrientation) {
    guard let faces = faceFeatures, faces.count > 0 else {
    // do something


Xcode8, Swift 3


Sample: TinyLog, GPUImage, AttachLayout, SwiftARGB

Pods: TinyLog, GPUImage, AttachLayout


CameraPreviewController is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "CameraPreviewController"


DragonCherry, [email protected]


CameraPreviewController is available under the MIT license. See the LICENSE file for more info.