Instagram-like photo browser and a camera feature with a few line of code in Swift.
Clone or download
Latest commit 0adca27 Dec 9, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
Demo add demo images Aug 13, 2017
Example fixin bug when allowMultipleSelection = false Dec 7, 2018
Fusuma.xcodeproj Refactor Nov 30, 2018
Fusuma.xcworkspace Add metadata to multiple image selection Jun 26, 2018
Fusuma Use Framework project Mar 26, 2016
Sources Remove self. Dec 9, 2018
.gitignore ignore .lock files Mar 25, 2016
.swift-version Swift version for podspec Nov 30, 2018
.travis.yml Use Xcode 10.1 image Nov 30, 2018
Fusuma.podspec 1.3.1 Dec 9, 2018
LICENSE remove comflicts Jan 31, 2016 1.3.0 Nov 30, 2018


Fusuma is a Swift library that provides an Instagram-like photo browser with a camera feature using only a few lines of code.
You can use Fusuma instead of UIImagePickerController. It also has a feature to take a square-sized photo.

Version Platform CI Status Carthage compatible codebeat




  • UIImagePickerController alternative
  • Cropping images in camera roll
  • Taking a square-sized photo and a video using AVFoundation
  • Flash: On & Off
  • Camera Mode: Front & Back
  • Video Mode
  • Colors fully customizable

Those features are available just with a few lines of code!


Manual installation

Download and drop the 'Classes' folder into your Xcode project.

Using CocoaPods

Add pod 'Fusuma' to your Podfile and run pod install. Also add use_frameworks! to the Podfile.

pod 'Fusuma'

Swift 3

pod 'Fusuma', github: '', branch: 'swift-3'

Fusuma Usage

Import Fusuma import Fusuma then use the following codes in some function except for viewDidLoad and give FusumaDelegate to the view controller.

let fusuma = FusumaViewController()
fusuma.delegate = self
fusuma.hasVideo = true //To allow for video capturing with .library and .camera available by default
fusuma.cropHeightRatio = 0.6 // Height-to-width ratio. The default value is 1, which means a squared-size photo.
fusuma.allowMultipleSelection = true // You can select multiple photos from the camera roll. The default value is false.
self.presentViewController(fusuma, animated: true, completion: nil)

Delegate methods

// Return the image which is selected from camera roll or is taken via the camera.
func fusumaImageSelected(image: UIImage, source: FusumaMode) {

  print("Image selected")

// Return the image but called after is dismissed.
func fusumaDismissedWithImage(image: UIImage, source: FusumaMode) {
  print("Called just after FusumaViewController is dismissed.")

func fusumaVideoCompleted(withFileURL fileURL: NSURL) {

  print("Called just after a video has been selected.")

// When camera roll is not authorized, this method is called.
func fusumaCameraRollUnauthorized() {

  print("Camera roll unauthorized")

// Return selected images when you allow to select multiple photos.
func fusumaMultipleImageSelected(images: [UIImage], source: FusumaMode) {


// Return an image and the detailed information.
func fusumaImageSelected(_ image: UIImage, source: FusumaMode, metaData: ImageMetadata) {


How To Customize

let fusuma = FusumaViewController()
fusuma.delegate = self
// ...
fusumaCameraRollTitle = "CustomizeCameraRollTitle"
fusumaCameraTitle = "CustomizeCameraTitle" // Camera Title
fusumaTintColor: UIColor // tint color
// ...
self.presentViewController(fusuma, animated: true, completion: nil)


Prop Type Description Default
fusumaBaseTintColor UIColor Base tint color. UIColor.hex("#c9c7c8", alpha: 1.0)
fusumaTintColor UIColor Tint color. UIColor.hex("#FCFCFC", alpha: 1.0)
fusumaBackgroundColor UIColor Background color. UIColor.hex("#c9c7c8", alpha: 1.0)
fusumaCheckImage UIImage Image of check button.
fusumaCloseImage UIImage Image of close button.
fusumaCropImage Bool Whether to crop the taken image. true
fusumaSavesImage Bool Whether to save the taken image. false
fusumaCameraRollTitle String Text of camera roll title. "Library"
fusumaCameraTitle String Text of carmera title text. Photo
fusumaVideoTitle String Text of video title. Video
fusumaTitleFont UIFont Font for title text. UIFont(name: "AvenirNext-DemiBold", size: 15)

Fusuma for Xamarin

Cheesebaron developed Chafu for Xamarin.




Your support is welcome through Bitcoin 3Ps8tBgz4qn6zVUr5D1wcYrrzYjMgEugqv


Fusuma is released under the MIT license.
See LICENSE for details.