• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
    Swift
  • License
    MIT License
  • Created over 7 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A drop-in replacement for UIImagePickerController with the ability to select multiple images and/or videos

icon
Tatsi

Build Status Contact License: MIT

A drop-in replacement for UIImagePickerController with more options and the ability to select multiple images and/or videos.

Screenshots

Albums list Camera Roll Selection

Introduction

Hi, we're Awkward. We created a customizable image picker for our iOS reddit client called Beam. UIImagePickerController only supports selecting 1 image at a time, but we needed more images in Beam. Tatsi has built in support for selecting multiple images. On top of that, we integrated a camera button directly into the picker. We welcome you to use Tatsi for your own projects.

Features

  • Multi selection of photos/videos using the photos library
  • Ability to reverse the display order of images/videos
  • Option to show a camera button inside the picker
  • Assigning a max limit for the number of photos and videos
  • Choosing the first view the user sees
  • Ability to display the picker in a single view, merging the album view with the assets collection
  • Accessibility (voice-over and switch control) is supported
  • Easily Localizable
  • Support for smart albums, user created albums and iCloud shared albums
  • Support for dark mode by default
  • Customization using the TatsiColors protocol

Installation

Submodules/Embedded frameworks (preferred)

  1. Add Tatsi as a submodule to your repository.
  2. Drag Tatsi.xcodeproj into your Xcode project
  3. Go to your Project Settings -> General and add Tatsi under Embedded Frameworks
  4. Add NSPhotoLibraryUsageDescription to your Info.plist with a proper description.
  5. (Optional) if you want to use the camera option. You will also need to add NSCameraUsageDescription to your Info.plist

Manual

  1. Remove Tatsi.h and Info.plist from the Tatsi folder.
  2. Add the contents of the Tatsi folder to your projects
  3. Add NSPhotoLibraryUsageDescription to your Info.plist with a proper description.
  4. (Optional) if you want to use the camera option. You will also need to add NSCameraUsageDescription to your Info.plist

Carthage

  1. Add github "awkward/Tatsi" to your Cartfile
  2. Run carthage update Tatsi
  3. Add Tatsi to your project's Embedded Binaries and to the Carthage build phase
  4. Add NSPhotoLibraryUsageDescription to your Info.plist with a proper description.
  5. (Optional) if you want to use the camera option. You will also need to add NSCameraUsageDescription to your Info.plist

Cocoapods

  1. Add pod 'Tatsi' to your Podfile
  2. Run pod install
  3. Add NSPhotoLibraryUsageDescription to your Info.plist with a proper description.
  4. (Optional) if you want to use the camera option. You will also need to add NSCameraUsageDescription to your Info.plist

Usage

  1. Add Import Tatsi and Import Photos to your Swift file. You can skip this step if you used manual installation.
  2. (Optional) Create an instance of TatsiConfig and configure the settings.
  3. Create an instance of TatsiPickerViewController. TatsiPickerViewController(config:) allows you to use the config from the previous step
  4. Implement TatsiPickerViewControllerDelegate
  5. Set the pickerDelegate on TatsiPickerViewController
  6. Present the TatsiPickerViewController

Localization

Tatsi is localized in English by default but you can provide your own localization in your project. Simple include the keys in your project's localizable strings. For more information see Localization on the Wiki

Misc

Origin of name

Tatsi = Photos in Planco, the language spoken in the game Planet Coaster. Source

Missing parts

  • The ability to color some elements
  • Icons for the hidden and recently deleted albums
  • Proper init?(coder aDecoder: NSCoder) support
  • UI Tests
  • Running Unit Tests on Travis

Documentation

We're trying to keep our documentation as updated as possible. Here you can find more information on Tatsi.

License

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

Links

More Repositories

1

Alembic

โš—๏ธ Extract a color palette from Sketch images
JavaScript
567
star
2

backbone.modal

A plugin for Backbone.js that simplifies creating modals for your application.
JavaScript
362
star
3

beam

Beam: the open source Reddit client for iOS
Swift
270
star
4

sketch-palette-generator

Output a JSON colour palette to Sketch ๐Ÿ’Ž
JavaScript
145
star
5

awesome-netherlands-events

๐Ÿฆ„ Curated list of awesome Dutch (tech related) events
60
star
6

Ocarina

A library to get metadata and Open Graph information from URLs
Swift
38
star
7

Trekker

Trekker, easily combine and swap out multiple analytics services on iOS
Swift
27
star
8

backbone.genetics

A super small and simple plugin for Backbone.js to toggle features in your app for user management, A/B testing purposes and all things youโ€™d like to enable for specific users and hide from others
CoffeeScript
14
star
9

AWKHelpers

A growing collection of UIKit and Foundation categories (helpers) we use at Awkward
Objective-C
10
star
10

serverless-plugin-slack

Notify Slack after deployments
JavaScript
7
star
11

slush-static-site

A slush generator for static websites
CSS
7
star
12

serverless-plugin-authorizer

Make authorization as simple as a boolean
JavaScript
5
star
13

react-simple-masonry

Simple masonry layout component for react
JavaScript
5
star
14

simple-dyno

ORM for AWS DynamoDB
JavaScript
4
star
15

github-enhancement-suite

Github enhance plugin for Google Chrome and Safari
JavaScript
4
star
16

ember-pods

Ember.js starter kit based on pods file structure
CoffeeScript
4
star
17

webpack-config-sketch-web

JavaScript
2
star
18

grunt-multi-stage-sourcemap

multi-level source map processing with grunt
JavaScript
1
star
19

sequelize-reassociate

A simple abstraction for Sequelize.js to relocate associated models if their parents ever were to be destroyed.
JavaScript
1
star
20

pinbook-api

API side of our pinbook hackathon idea
JavaScript
1
star
21

stripity_stripe

Elixir
1
star