{"id":19755325,"url":"https://github.com/awkward/tatsi","last_synced_at":"2025-04-30T11:32:44.572Z","repository":{"id":22667078,"uuid":"96987583","full_name":"awkward/Tatsi","owner":"awkward","description":"A drop-in replacement for UIImagePickerController with the ability to select multiple images and/or videos","archived":false,"fork":false,"pushed_at":"2024-01-17T15:12:02.000Z","size":1219,"stargazers_count":110,"open_issues_count":16,"forks_count":30,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-10-31T15:49:35.391Z","etag":null,"topics":["photos","swift","uiimagepickercontroller"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/awkward.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-12T09:06:11.000Z","updated_at":"2024-07-07T06:30:11.000Z","dependencies_parsed_at":"2024-06-20T23:38:03.135Z","dependency_job_id":null,"html_url":"https://github.com/awkward/Tatsi","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awkward%2FTatsi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awkward%2FTatsi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awkward%2FTatsi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awkward%2FTatsi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awkward","download_url":"https://codeload.github.com/awkward/Tatsi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224208083,"owners_count":17273674,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["photos","swift","uiimagepickercontroller"],"created_at":"2024-11-12T03:10:21.052Z","updated_at":"2024-11-12T03:10:21.540Z","avatar_url":"https://github.com/awkward.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003cimg src=\"Docs/icon.png\" width=\"136\" alt=\"icon\"\u003e\u003cbr\u003e\n  Tatsi\u003cbr\u003e\n  \u003cp align=\"center\"\u003e\n  \u003ca href=\"https://travis-ci.org/awkward/Tatsi\"\u003e\n    \u003cimg src=\"https://travis-ci.org/awkward/Tatsi.svg?branch=master\" alt=\"Build Status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://twitter.com/madeawkward\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/contact-madeawkward-blue.svg?style=flat\" alt=\"Contact\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow.svg\" alt=\"License: MIT\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003c/h1\u003e\n\nA drop-in replacement for UIImagePickerController with more options and the ability to select multiple images and/or videos.\n\n## Screenshots\n\n![Albums list](Docs/Screenshots/albums.png?raw=true)\n![Camera Roll](Docs/Screenshots/camera-roll.png?raw=true)\n![Selection](Docs/Screenshots/camera-roll-selected.png?raw=true)\n\n## Introduction\n\nHi, we're \u003ca href=\"https://awkward.co/\" target=\"_blank\"\u003eAwkward\u003c/a\u003e. We created a customizable image picker for our iOS reddit client called \u003ca href=\"https://beamreddit.com/\" target=\"_blank\"\u003eBeam\u003c/a\u003e. 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.\n\n## Features\n\n- Multi selection of photos/videos using the photos library\n- Ability to reverse the display order of images/videos\n- Option to show a camera button inside the picker\n- Assigning a max limit for the number of photos and videos\n- Choosing the first view the user sees\n- Ability to display the picker in a single view, merging the album view with the assets collection\n- Accessibility (voice-over and switch control) is supported\n- Easily Localizable\n- Support for smart albums, user created albums and iCloud shared albums\n- Support for dark mode by default\n- Customization using the `TatsiColors` protocol\n\n## Installation\n\n### Submodules/Embedded frameworks (preferred)\n\n1. Add Tatsi as a submodule to your repository.\n2. Drag `Tatsi.xcodeproj` into your Xcode project\n3. Go to your Project Settings -\u003e General and add Tatsi under Embedded Frameworks\n4. Add `NSPhotoLibraryUsageDescription` to your Info.plist with a proper description.\n5. (Optional) if you want to use the camera option. You will also need to add `NSCameraUsageDescription` to your Info.plist\n\n### Manual\n\n1. Remove Tatsi.h and Info.plist from the Tatsi folder.\n2. Add the contents of the Tatsi folder to your projects\n3. Add `NSPhotoLibraryUsageDescription` to your Info.plist with a proper description.\n4. (Optional) if you want to use the camera option. You will also need to add `NSCameraUsageDescription` to your Info.plist\n\n### Carthage\n\n1. Add `github \"awkward/Tatsi\"` to your `Cartfile`\n2. Run `carthage update Tatsi`\n3. Add Tatsi to your project's Embedded Binaries and to the Carthage build phase\n4. Add `NSPhotoLibraryUsageDescription` to your Info.plist with a proper description.\n5. (Optional) if you want to use the camera option. You will also need to add `NSCameraUsageDescription` to your Info.plist\n\n### Cocoapods\n\n1. Add `pod 'Tatsi'` to your `Podfile`\n2. Run `pod install`\n3. Add `NSPhotoLibraryUsageDescription` to your Info.plist with a proper description.\n4. (Optional) if you want to use the camera option. You will also need to add `NSCameraUsageDescription` to your Info.plist\n\n## Usage\n\n1. Add `Import Tatsi` and `Import Photos` to your Swift file. You can skip this step if you used manual installation.\n2. (Optional) Create an instance of `TatsiConfig` and configure the settings.\n3. Create an instance of `TatsiPickerViewController`. `TatsiPickerViewController(config:)` allows you to use the config from the previous step\n4. Implement `TatsiPickerViewControllerDelegate`\n5. Set the `pickerDelegate` on `TatsiPickerViewController`\n6. Present the `TatsiPickerViewController`\n\n\n## Localization\n\nTatsi 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](https://github.com/awkward/Tatsi/wiki/Localization) on the Wiki\n\n## Misc\n\n### Origin of name\nTatsi = Photos in Planco, the language spoken in the game Planet Coaster. [Source](https://twitter.com/JamesStant/status/882582597460799489)\n\n### Missing parts\n\n- [ ] The ability to color some elements\n- [ ] Icons for the hidden and recently deleted albums\n- [ ] Proper `init?(coder aDecoder: NSCoder)` support\n- [ ] UI Tests\n- [ ] Running Unit Tests on Travis\n\n## Documentation\n\n\u003e We're trying to keep our documentation as updated as possible. Here you can find more information on Tatsi.\n\n## License\n\n\u003e Tatsi is available under the MIT license. See the LICENSE file for more info.\n\n## Links\n\n  - \u003ca href=\"https://awkward.co/\" target=\"_blank\"\u003eAwkward\u003c/a\u003e\n  - \u003ca href=\"https://beamreddit.com/\" target=\"_blank\"\u003eBeam\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawkward%2Ftatsi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawkward%2Ftatsi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawkward%2Ftatsi/lists"}