GitPedia

Fusuma

Instagram-like photo browser and a camera feature with a few line of code in Swift.

From ytakzk·Updated June 12, 2026·View on GitHub·

We highly recommend [YPImagePicker](https://github.com/Yummypets/YPImagePicker). The project is written primarily in Swift, distributed under the MIT License license, first published in 2016. It has gained significant community traction with 2,455 stars and 337 forks on GitHub. Key topics include: carthage, cocoapod, cocoapods, crop, instagram.

Latest release: 1.1.1
July 2, 2017View Changelog →

NOTE: This project is no longer maintained.

We highly recommend YPImagePicker.

Fusuma

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

Preview

<img src="./Demo/fusuma.gif?raw=true" width="340px">

Images

<img src="./Demo/camera_roll.png?raw=true" width="340px"> <img src="./Demo/photo.png?raw=true" width="340px">

Features

  • 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!

Installation

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.

use_frameworks!
pod 'Fusuma'

Swift 3

The latest version does support Swift 4.2. If you're still using Swift 3, you can install Fusuma as follows:

pod 'Fusuma', git: 'git@github.com:ytakzk/Fusuma.git', 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.

Swift
let fusuma = FusumaViewController() fusuma.delegate = self fusuma.availableModes = [FusumaMode.library, FusumaMode.camera, FusumaMode.video] // Add .video capturing mode to the default .library and .camera modes 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.present(fusuma, animated: true, completion: nil)

Delegate methods

Swift
// 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: URL) { 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

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

Properties

PropTypeDescriptionDefault
fusumaBaseTintColor UIColorBase tint color.UIColor.hex("#c9c7c8", alpha: 1.0)
fusumaTintColor UIColorTint color.UIColor.hex("#FCFCFC", alpha: 1.0)
fusumaBackgroundColor UIColorBackground color.UIColor.hex("#c9c7c8", alpha: 1.0)
fusumaCheckImage UIImageImage of check button.
fusumaCloseImage UIImageImage of close button.
fusumaCropImage BoolWhether to crop the taken image.true
fusumaSavesImage BoolWhether to save the taken image.false
fusumaCameraRollTitle StringText of camera roll title."Library"
fusumaCameraTitle StringText of carmera title text.Photo
fusumaVideoTitle StringText of video title.Video
fusumaTitleFont UIFontFont for title text.UIFont(name: "AvenirNext-DemiBold", size: 15)

Fusuma for Xamarin

Cheesebaron developed Chafu for Xamarin.
https://github.com/Cheesebaron/Chafu

Author

ytakzk
https://ytakzk.me

Donation

Your support is welcome through Bitcoin 3Ps8tBgz4qn6zVUr5D1wcYrrzYjMgEugqv

License

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

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from ytakzk/Fusuma via the GitHub API.Last fetched: 6/20/2026