{"id":15288653,"url":"https://github.com/izyumkin/mcemojipicker","last_synced_at":"2025-04-09T15:09:05.012Z","repository":{"id":38358949,"uuid":"498610479","full_name":"izyumkin/MCEmojiPicker","owner":"izyumkin","description":"👻 EmojiPicker. Emoji picker for iOS like on macOS. With SwiftUI support.","archived":false,"fork":false,"pushed_at":"2024-08-21T11:40:47.000Z","size":485,"stargazers_count":325,"open_issues_count":21,"forks_count":44,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-09T15:08:57.526Z","etag":null,"topics":["app","apple","controller","emoji","emoji-picker","emojipicker","ios11","native","picker","swift","swiftui","swiftui-components","swiftui-framework","transition","ui","uikit"],"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/izyumkin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2022-06-01T06:03:06.000Z","updated_at":"2025-04-08T10:15:21.000Z","dependencies_parsed_at":"2022-08-25T01:31:33.442Z","dependency_job_id":"9502590c-4b70-4438-8a3a-f7a9a419a886","html_url":"https://github.com/izyumkin/MCEmojiPicker","commit_stats":{"total_commits":118,"total_committers":4,"mean_commits":29.5,"dds":0.4067796610169492,"last_synced_commit":"0277a4019d20a8ad3ab49ee357824456a60bac31"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izyumkin%2FMCEmojiPicker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izyumkin%2FMCEmojiPicker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izyumkin%2FMCEmojiPicker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/izyumkin%2FMCEmojiPicker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/izyumkin","download_url":"https://codeload.github.com/izyumkin/MCEmojiPicker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248055282,"owners_count":21040157,"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":["app","apple","controller","emoji","emoji-picker","emojipicker","ios11","native","picker","swift","swiftui","swiftui-components","swiftui-framework","transition","ui","uikit"],"created_at":"2024-09-30T15:51:50.900Z","updated_at":"2025-04-09T15:09:04.976Z","avatar_url":"https://github.com/izyumkin.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MCEmojiPicker\n\n[![Version](https://img.shields.io/cocoapods/v/MCEmojiPicker.svg?style=flat)](https://cocoapods.org/pods/MCEmojiPicker)\n[![License](https://img.shields.io/cocoapods/l/MCEmojiPicker.svg?style=flat)](https://cocoapods.org/pods/MCEmojiPicker)\n[![Platform](https://img.shields.io/cocoapods/p/MCEmojiPicker.svg?style=flat)](https://cocoapods.org/pods/MCEmojiPicker)\n\n\u003cp float=\"left\"\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/50948518/216799717-25b3e4ed-b4c5-4166-91a2-72374b0564f9.gif\" width=\"280\"\u003e\n\u003c/p\u003e\n\n## About\n\n\u003cb\u003eIt is a customizable library implementing macOS style emoji picker popover.\u003c/b\u003e\n\u003cbr\u003e\u003cbr\u003e\nIf you are interested in how I developed it and what difficulties I encountered in the process, you can read an article on [Medium](https://medium.com/@izzyumkin/an-emoji-selection-element-aka-emojipicker-for-ios-like-in-macos-e2fa022b80af), [Habr](https://habr.com/ru/post/716194/) about it.\nAnd if you like the project, don't forget to `put star ★`.\n\n#### Limitations\n- Does not support two part emojis. For example:\n  - [x] Supported: 🤝🏻 🤝🏿\n  - [ ] Not supported: 🫱🏿‍🫲🏻 🫱🏼‍🫲🏿\n  \nIf you know how to fix it - welcome to the [discussion](https://github.com/izyumkin/MCEmojiPicker/discussions/10).\n\n## Apps Using\n\n\u003cp float=\"left\"\u003e\n    \u003ca href=\"https://apps.apple.com/app/id1500111859\"\u003e\u003cimg src=\"https://github.com/izyumkin/MCEmojiPicker/assets/50948518/17f93db2-441c-41bb-9b32-2e322d6174f6\" height=\"65\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://apps.apple.com/app/id6450279059\"\u003e\u003cimg src=\"https://github.com/izyumkin/MCEmojiPicker/assets/50948518/270146ff-d3e7-4c46-97c2-2c796e6bd78d\" height=\"65\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://apps.apple.com/app/id6444636956\"\u003e\u003cimg src=\"https://github.com/izyumkin/MCEmojiPicker/assets/50948518/ecae445c-1683-422b-a0e7-8dbaeac2eb18\" height=\"65\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/Housemates-Mobile-App/housemates_mobileapp\"\u003e\u003cimg src=\"https://github.com/izyumkin/MCEmojiPicker/assets/50948518/05a8651a-c6fb-419e-9bdc-aa7d68b53af7\" height=\"65\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/RedEagle-dh/Quantify\"\u003e\u003cimg src=\"https://github.com/izyumkin/MCEmojiPicker/assets/50948518/bfa48cc4-c901-4235-8bfc-f5fb0fa22279\" height=\"65\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/norbusonam/routine\"\u003e\u003cimg src=\"https://github.com/izyumkin/MCEmojiPicker/assets/50948518/97a5b6ee-0cff-4839-894e-5c2d08daca3a\" height=\"65\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/bapaws/clock\"\u003e\u003cimg src=\"https://github.com/izyumkin/MCEmojiPicker/assets/50948518/7a615b02-43a2-4557-bfbd-7f40841ac508\" height=\"65\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/fn1y/Habitrack\"\u003e\u003cimg src=\"https://github.com/izyumkin/MCEmojiPicker/assets/50948518/0b634a00-257f-4e9d-93b0-8f8a2c0d335d\" height=\"65\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/honzachalupa/SymptomsTracker\"\u003e\u003cimg src=\"https://github.com/izyumkin/MCEmojiPicker/assets/50948518/836c08c8-7e60-4403-ad0a-fffaed926d15\" height=\"65\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/savoirfairelinux/jami-client-ios\"\u003e\u003cimg src=\"https://github.com/izyumkin/MCEmojiPicker/assets/50948518/b2e00327-7c13-407b-8c43-3c189504c3c5\" height=\"65\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/deltachat/deltachat-ios\"\u003e\u003cimg src=\"https://github.com/izyumkin/MCEmojiPicker/assets/50948518/6322e6cf-71d4-4f37-893c-44277b277517\" height=\"65\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nIf you use a `MCEmojiPicker`, add your application via Pull Request. Fore more information you can see [contribution guide](https://github.com/izyumkin/MCEmojiPicker/blob/main/CONTRIBUTING.md).\n\n## Navigation\n\n- [Requirements](#requirements)\n- [Installation](#installation)\n    - [CocoaPods](#cocoapods)\n    - [Swift Package Manager](#swift-package-manager)\n    - [Manually](#manually)\n- [Quick Start](#quick-start)\n- [Usage](#usage)\n    - [Selected emoji category tint color](#selected-emoji-category-tint-color)\n    - [Arrow direction](#arrow-direction)\n    - [Horizontal inset](#horizontal-inset)\n    - [Is dismiss after choosing](#is-dismiss-after-choosing)\n    - [Custom height](#custom-height)\n    - [Feedback generator style](#feedback-generator-style)\n- [SwiftUI](#swiftui)\n- [Localization](#localization)\n- [TODO](#todo)\n\n## Requirements\n\n- Swift `4.2` \u0026 `5.0`\n- Ready for use on iOS 12.0+\n- SwiftUI is supported from iOS 13.0\n\n## Installation\n\n### CocoaPods\n\n[CocoaPods](https://cocoapods.org) is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate `MCEmojiPicker` into your Xcode project using CocoaPods, specify it in your `Podfile`:\n\n```ruby\npod 'MCEmojiPicker'\n```\n\n### Swift Package Manager\n\nThe [Swift Package Manager](https://swift.org/package-manager/) is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies.\n\nTo integrate `MCEmojiPicker` into your Xcode project using Xcode 11, specify it in `Project \u003e Swift Packages`:\n\n```ogdl\nhttps://github.com/izyumkin/MCEmojiPicker\n```\n\n### Manually\n\nIf you prefer not to use any of the aforementioned dependency managers, you can integrate `MCEmojiPicker` into your project manually. Put `Source/MCEmojiPicker` folder in your Xcode project. Make sure to enable `Copy items if needed` and `Create groups`.\n\n## Quick Start\nCreate `UIButton` and add selector as action:\n```swift\n@objc private func selectEmojiAction(_ sender: UIButton) {\n    let viewController = MCEmojiPickerViewController()\n    viewController.delegate = self\n    viewController.sourceView = sender\n    present(viewController, animated: true)\n}\n```\n\nAnd then recieve emoji in the delegate method:\n```swift\nextension ViewController: MCEmojiPickerDelegate {\n    func didGetEmoji(emoji: String) {\n        emojiButton.setTitle(emoji, for: .normal)\n    }\n}\n```\n\n## Usage\n\n`sourceView` is the view containing the anchor rectangle for the popover. You can create any `UIView` instance and set it in this property. \n\n### Selected emoji category tint color\nColor for the selected emoji category. The default value of this property is `.systemBlue`.\n\n```swift\nviewController.selectedEmojiCategoryTintColor = .systemRed\n```\n\n### Arrow direction\nThe direction of the arrow for EmojiPicker. The default value of this property is `.up`.\n\n```swift\nviewController.arrowDirection = .up\n```\n\n### Horizontal inset\nInset from the `sourceView` border. The default value of this property is `0`.\n\n```swift\nviewController.horizontalInset = 0\n```\n\n### Is dismiss after choosing\nDefines whether to dismiss emoji picker or not after choosing. The default value of this property is `true`.\n\n```swift\nviewController.isDismissAfterChoosing = true\n```\n\n### Custom height\nCustom height for EmojiPicker. The default value of this property is `nil`.\n\n```swift\nviewController.customHeight = 300\n```\n\n### Feedback generator style\nFeedback generator style. To turn off, set `nil` to this parameter. The default value of this property is `.light`.\n\n```swift\nviewController.feedBackGeneratorStyle = .soft\n```\n\n## SwiftUI\n\nUse like system popover. All settings are available in the method initializer.\n\n```swift\nButton(selectedEmoji) {\n    isPresented.toggle()\n}.emojiPicker(\n    isPresented: $isPresented,\n    selectedEmoji: $selectedEmoji\n)\n```\n\nor interact directly with the SwiftUI wrapper for the MCEmojiPickerViewController:\n\n```swift\nMCEmojiPickerRepresentableController(\n    isPresented: $isPresented,\n    selectedEmoji: $selectedEmoji,\n    arrowDirection: .up,\n    customHeight: 380.0,\n    horizontalInset: .zero,\n    isDismissAfterChoosing: true,\n    selectedEmojiCategoryTintColor: .systemBlue,\n    feedBackGeneratorStyle: .light\n)\n```\n\n## Localization\n🌍 This library supports all existing localizations\n\n## TODO\n\n-   [x] The main functionality for choosing emojis\n-   [x] Dark mode\n-   [x] Segmented control for jumping an emoji section\n-   [x] Automatic adjustment of the relevant set of emoji for the iOS version\n-   [x] Select skin tones from popup\n-   [x] Frequently used\n-   [ ] Search bar and search results\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fizyumkin%2Fmcemojipicker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fizyumkin%2Fmcemojipicker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fizyumkin%2Fmcemojipicker/lists"}