MCEmojiPicker

Version License Platform

关于

这是一个可定制的库,实现了 macOS 风格的 emoji 选择器弹出框。

如果您对我是如何开发它以及在此过程中遇到的困难感兴趣,您可以阅读我在 MediumHabr 上发表的文章。如果您喜欢这个项目,请不要忘记 put star ★ (点亮星标)。

局限性

如果您知道如何修复它,欢迎参与讨论

使用该项目的应用

如果您使用 MCEmojiPicker,请通过 Pull Request 添加您的应用程序。 有关更多信息,您可以查看贡献指南

导航

要求

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。 有关使用和安装说明,请访问他们的网站。 要使用 CocoaPods 将 MCEmojiPicker 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

pod 'MCEmojiPicker'

Swift Package Manager

Swift Package Manager 是一个用于管理 Swift 代码分发的工具。它与 Swift 构建系统集成,以自动执行下载、编译和链接依赖项的过程。

要使用 Xcode 11 将 MCEmojiPicker 集成到您的 Xcode 项目中,请在 Project > Swift Packages 中指定它

https://github.com/izyumkin/MCEmojiPicker

手动

如果您不喜欢使用任何上述依赖管理器,您可以手动将 MCEmojiPicker 集成到您的项目中。 将 Source/MCEmojiPicker 文件夹放在您的 Xcode 项目中。 确保启用 Copy items if neededCreate groups

快速开始

创建 UIButton 并将选择器添加为操作

@objc private func selectEmojiAction(_ sender: UIButton) {
    let viewController = MCEmojiPickerViewController()
    viewController.delegate = self
    viewController.sourceView = sender
    present(viewController, animated: true)
}

然后在代理方法中接收表情符号

extension ViewController: MCEmojiPickerDelegate {
    func didGetEmoji(emoji: String) {
        emojiButton.setTitle(emoji, for: .normal)
    }
}

用法

sourceView 是包含弹出框锚定矩形的视图。 您可以创建任何 UIView 实例并在该属性中设置它。

选中表情符号类别时的颜色

选中表情符号类别的颜色。 此属性的默认值为 .systemBlue

viewController.selectedEmojiCategoryTintColor = .systemRed

箭头方向

EmojiPicker 的箭头方向。 此属性的默认值为 .up

viewController.arrowDirection = .up

水平内边距

sourceView 边框的内边距。 此属性的默认值为 0

viewController.horizontalInset = 0

选择后是否关闭

定义选择后是否关闭表情符号选择器。 此属性的默认值为 true

viewController.isDismissAfterChoosing = true

自定义高度

EmojiPicker 的自定义高度。 此属性的默认值为 nil

viewController.customHeight = 300

触感反馈样式

触感反馈样式。 要关闭,请将 nil 设置为此参数。 此属性的默认值为 .light

viewController.feedBackGeneratorStyle = .soft

SwiftUI

像系统弹出框一样使用。 所有设置都可以在方法初始化程序中使用。

Button(selectedEmoji) {
    isPresented.toggle()
}.emojiPicker(
    isPresented: $isPresented,
    selectedEmoji: $selectedEmoji
)

或者直接与 MCEmojiPickerViewController 的 SwiftUI 包装器进行交互

MCEmojiPickerRepresentableController(
    isPresented: $isPresented,
    selectedEmoji: $selectedEmoji,
    arrowDirection: .up,
    customHeight: 380.0,
    horizontalInset: .zero,
    isDismissAfterChoosing: true,
    selectedEmojiCategoryTintColor: .systemBlue,
    feedBackGeneratorStyle: .light
)

本地化

🌍 此库支持所有现有的本地化

待办事项