EmojiPicker is a customizable package
implementing macOS-style emoji picker popover
Ready for use with Swift 4.2+ on iOS 11.1+
The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift
compiler. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies.
In Xcode navigate to File → Swift Packages → Add Package Dependency. Use this URL to add the dependency:
https://github.com/htmlprogrammist/EmojiPicker
Once you have your Swift package set up, adding as a dependency is as easy as adding it to the dependencies
value of your Package.swift
.
dependencies: [
.package(url: "https://github.com/htmlprogrammist/EmojiPicker", .upToNextMajor(from: "3.0.0"))
]
The CocoaPods is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate EmojiPicker
into your Xcode project using CocoaPods, specify it in your Podfile
:
pod 'EmojiPicker', :git => 'https://github.com/htmlprogrammist/EmojiPicker'
If you prefer not to use any of dependency managers, you can integrate manually. Put Sources/EmojiPicker
folder in your Xcode project. Make sure to enable Copy items if needed
and Create groups
.
Create UIButton
and add selector as action:
@objc private func openEmojiPickerModule(sender: UIButton) {
let viewController = EmojiPickerViewController()
viewController.delegate = self
viewController.sourceView = sender
present(viewController, animated: true)
}
And then recieve emoji in the delegate method:
extension ViewController: EmojiPickerDelegate {
func didGetEmoji(emoji: String) {
emojiButton.setTitle(emoji, for: .normal)
}
}
Delegate for EmojiPicker to provide chosen emoji.
viewController.delegate = self
A view containing the anchor rectangle for the popover. You can create any UIView
instances and set them as the sender
.
viewController.sourceView = sender
Also, there is way more settings for configuration:
Color for the selected emoji category. The default value of this property is .systemBlue
.
viewController.selectedEmojiCategoryTintColor = .systemRed
The direction of the arrow for EmojiPicker. The default value of this property is .up
.
viewController.arrowDirection = .up
Inset from the sourceView
border. The default value of this property is 0
.
viewController.horizontalInset = 0
Defines whether to dismiss emoji picker or not after choosing. The default value of this property is true
.
viewController.isDismissedAfterChoosing = true
Custom height for EmojiPicker. The default value of this property is nil
.
viewController.customHeight = 300
Feedback generator style. To turn off, set nil
to this parameter. The default value of this property is .light
.
viewController.feedbackGeneratorStyle = .soft
To play around with the project, contribute to it, see how it works or adapt it for yourself:
- Clone or fork this repository to yourself
- Open
Example App/EmojiPicker.xcworkspace
file - Expand
Pods
target - Expand
Development Pods
andEmojiPicker
directories. Here you can make your changes - Build & Run project to see an immediate result on an example application. Have fun!
- Chinese 🇨🇳
- English 🇬🇧
- French 🇫🇷
- German 🇩🇪
- Hindi 🇮🇳
- Russian 🇷🇺
- Turkish 🇹🇷
- Ukrainian 🇺🇦
You can also contribute your language to this list. Please, read following heading for more information.
❗️ Note that the languages are arranged in alphabetical order
This project is based on MCEmojiPicker and is one big contribution in it. And of course contributions are welcomed and encouraged here! Please see the Contributing guide.
To be a truly great community, we need to welcome developers from all walks of life, with different backgrounds, and with a wide range of experience. A diverse and friendly community will have more great ideas, more unique perspectives, and produce more great code. We will work diligently to make our community welcoming to everyone.
To give clarity of what is expected of our members, we have adopted the code of conduct defined by the Contributor Covenant. This document is used across many open source communities, and we think it articulates our values well. For more, see the Code of Conduct.