├── EmojiKeyboard ├── Assets.xcassets │ ├── Contents.json │ ├── Input_icon_expression.imageset │ │ ├── biaoqing@2x.png │ │ ├── biaoqing@3x.png │ │ └── Contents.json │ ├── input_icon_comment.imageset │ │ ├── xiaoxi copy@2x.png │ │ ├── xiaoxi copy@3x.png │ │ └── Contents.json │ ├── Input_icon_keyboard.imageset │ │ ├── Input_icon_keyboard.png │ │ ├── Input_icon_keyboard@2x.png │ │ ├── Input_icon_keyboard@3x.png │ │ └── Contents.json │ └── AppIcon.appiconset │ │ └── Contents.json ├── EmojiKeyboard │ ├── EmojiKeyBoard.bundle │ │ ├── delete@3x.png │ │ ├── com.sina.emoji │ │ │ ├── lxh_oye.png │ │ │ ├── lxh_juhan.png │ │ │ ├── lxh_pili.png │ │ │ ├── lxh_toule.png │ │ │ ├── lxh_zana.png │ │ │ ├── lxh_beicui.png │ │ │ ├── lxh_beidian.png │ │ │ ├── lxh_bengkui.png │ │ │ ├── lxh_biefanwo.png │ │ │ ├── lxh_geijin.png │ │ │ ├── lxh_haoaio.png │ │ │ ├── lxh_haobang.png │ │ │ ├── lxh_haojiong.png │ │ │ ├── lxh_holdzhu.png │ │ │ ├── lxh_jiekexun.png │ │ │ ├── lxh_jiujie.png │ │ │ ├── lxh_juhan@2x.png │ │ │ ├── lxh_koubishi.png │ │ │ ├── lxh_kunsile.png │ │ │ ├── lxh_leifeng.png │ │ │ ├── lxh_meigui.png │ │ │ ├── lxh_oye@2x.png │ │ │ ├── lxh_pili@2x.png │ │ │ ├── lxh_qiaoqiao.png │ │ │ ├── lxh_qiubite.png │ │ │ ├── lxh_toule@2x.png │ │ │ ├── lxh_tuijian.png │ │ │ ├── lxh_xiaohaha.png │ │ │ ├── lxh_xiudada.png │ │ │ ├── lxh_xuyuan.png │ │ │ ├── lxh_youyali.png │ │ │ ├── lxh_zana@2x.png │ │ │ ├── lxh_zhenjing.png │ │ │ ├── lxh_zhuanfa.png │ │ │ ├── lxh_beicui@2x.png │ │ │ ├── lxh_beidian@2x.png │ │ │ ├── lxh_bengkui@2x.png │ │ │ ├── lxh_buhaoyisi.png │ │ │ ├── lxh_deyidexiao.png │ │ │ ├── lxh_geijin@2x.png │ │ │ ├── lxh_haoaio@2x.png │ │ │ ├── lxh_haobang@2x.png │ │ │ ├── lxh_haoxihuan.png │ │ │ ├── lxh_holdzhu@2x.png │ │ │ ├── lxh_jiujie@2x.png │ │ │ ├── lxh_kunsile@2x.png │ │ │ ├── lxh_leifeng@2x.png │ │ │ ├── lxh_meigui@2x.png │ │ │ ├── lxh_qiubite@2x.png │ │ │ ├── lxh_qiuguanzhu.png │ │ │ ├── lxh_tuijian@2x.png │ │ │ ├── lxh_xiudada@2x.png │ │ │ ├── lxh_xuyuan@2x.png │ │ │ ├── lxh_youyali@2x.png │ │ │ ├── lxh_zhuanfa@2x.png │ │ │ ├── lxh_biefanwo@2x.png │ │ │ ├── lxh_buhaoyisi@2x.png │ │ │ ├── lxh_deyidexiao@2x.png │ │ │ ├── lxh_haojiong@2x.png │ │ │ ├── lxh_haoxihuan@2x.png │ │ │ ├── lxh_jiekexun@2x.png │ │ │ ├── lxh_koubishi@2x.png │ │ │ ├── lxh_leiliumanmian.png │ │ │ ├── lxh_qiaoqiao@2x.png │ │ │ ├── lxh_qiuguanzhu@2x.png │ │ │ ├── lxh_quntiweiguan.png │ │ │ ├── lxh_xianghumobai.png │ │ │ ├── lxh_xiangyixiang.png │ │ │ ├── lxh_xiaohaha@2x.png │ │ │ ├── lxh_zaokuangzheng.png │ │ │ ├── lxh_zhenjing@2x.png │ │ │ ├── lxh_buxiangshangban.png │ │ │ ├── lxh_quntiweiguan@2x.png │ │ │ ├── lxh_shuaishuaishou.png │ │ │ ├── lxh_xianghumobai@2x.png │ │ │ ├── lxh_xiangyixiang@2x.png │ │ │ ├── lxh_buxiangshangban@2x.png │ │ │ ├── lxh_leiliumanmian@2x.png │ │ │ ├── lxh_shuaishuaishou@2x.png │ │ │ ├── lxh_zaokuangzheng@2x.png │ │ │ └── info.plist │ │ ├── com.hxq.emoji │ │ │ ├── Input_emoji_01@2x.png │ │ │ ├── Input_emoji_01@3x.png │ │ │ ├── Input_emoji_02@2x.png │ │ │ ├── Input_emoji_02@3x.png │ │ │ ├── Input_emoji_03@2x.png │ │ │ ├── Input_emoji_03@3x.png │ │ │ ├── Input_emoji_04@2x.png │ │ │ ├── Input_emoji_04@3x.png │ │ │ ├── Input_emoji_05@2x.png │ │ │ ├── Input_emoji_05@3x.png │ │ │ ├── Input_emoji_06@2x.png │ │ │ ├── Input_emoji_06@3x.png │ │ │ ├── Input_emoji_07@2x.png │ │ │ ├── Input_emoji_07@3x.png │ │ │ ├── Input_emoji_08@2x.png │ │ │ ├── Input_emoji_08@3x.png │ │ │ ├── Input_emoji_09@2x.png │ │ │ ├── Input_emoji_09@3x.png │ │ │ ├── Input_emoji_10@2x.png │ │ │ ├── Input_emoji_10@3x.png │ │ │ ├── Input_emoji_11@2x.png │ │ │ ├── Input_emoji_11@3x.png │ │ │ ├── Input_emoji_12@2x.png │ │ │ ├── Input_emoji_12@3x.png │ │ │ ├── Input_emoji_13@2x.png │ │ │ ├── Input_emoji_13@3x.png │ │ │ ├── Input_emoji_14@2x.png │ │ │ ├── Input_emoji_14@3x.png │ │ │ ├── Input_emoji_15@2x.png │ │ │ ├── Input_emoji_15@3x.png │ │ │ ├── Input_emoji_16@2x.png │ │ │ ├── Input_emoji_16@3x.png │ │ │ └── info.plist │ │ ├── emojiPackage.plist │ │ └── com.apple.emoji │ │ │ └── info.plist │ ├── EmojiAttachment.swift │ ├── EmojiManager.swift │ ├── EmojiPackage.swift │ ├── EmojiModel.swift │ └── EmojiPrase.swift ├── ViewController.swift ├── Info.plist ├── Base.lproj │ ├── Main.storyboard │ └── LaunchScreen.storyboard └── AppDelegate.swift ├── Pods ├── Target Support Files │ ├── SnapKit │ │ ├── SnapKit.modulemap │ │ ├── SnapKit-dummy.m │ │ ├── SnapKit-prefix.pch │ │ ├── SnapKit-umbrella.h │ │ ├── SnapKit.xcconfig │ │ └── Info.plist │ └── Pods-EmojiKeyboard │ │ ├── Pods-EmojiKeyboard.modulemap │ │ ├── Pods-EmojiKeyboard-dummy.m │ │ ├── Pods-EmojiKeyboard-umbrella.h │ │ ├── Pods-EmojiKeyboard.debug.xcconfig │ │ ├── Pods-EmojiKeyboard.release.xcconfig │ │ ├── Info.plist │ │ ├── Pods-EmojiKeyboard-acknowledgements.markdown │ │ ├── Pods-EmojiKeyboard-acknowledgements.plist │ │ ├── Pods-EmojiKeyboard-resources.sh │ │ └── Pods-EmojiKeyboard-frameworks.sh ├── Manifest.lock └── SnapKit │ ├── LICENSE │ ├── Source │ ├── ConstraintView.swift │ ├── ConstraintInsets.swift │ ├── ConstraintLayoutSupport.swift │ ├── UILayoutSupport+Extensions.swift │ ├── ConstraintLayoutGuide+Extensions.swift │ ├── ConstraintLayoutGuide.swift │ ├── ConstraintConfig.swift │ ├── ConstraintRelation.swift │ ├── Typealiases.swift │ ├── ConstraintMakerFinalizable.swift │ ├── ConstraintRelatableTarget.swift │ ├── LayoutConstraint.swift │ ├── ConstraintLayoutSupportDSL.swift │ ├── ConstraintItem.swift │ ├── ConstraintMakerEditable.swift │ ├── ConstraintMultiplierTarget.swift │ ├── ConstraintOffsetTarget.swift │ ├── ConstraintPriorityTarget.swift │ ├── ConstraintLayoutGuideDSL.swift │ ├── ConstraintPriority.swift │ ├── ConstraintMakerPriortizable.swift │ ├── ConstraintDescription.swift │ ├── ConstraintInsetTarget.swift │ ├── LayoutConstraintItem.swift │ ├── ConstraintViewDSL.swift │ ├── ConstraintMakerRelatable.swift │ ├── ConstraintMakerExtendable.swift │ ├── ConstraintConstantTarget.swift │ ├── Debugging.swift │ ├── ConstraintDSL.swift │ ├── ConstraintView+Extensions.swift │ └── ConstraintMaker.swift │ └── README.md ├── EmojiKeyboard.xcodeproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── EmojiKeyboard.xcworkspace └── contents.xcworkspacedata ├── Podfile ├── Podfile.lock └── .gitignore /EmojiKeyboard/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/delete@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/delete@3x.png -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/SnapKit.modulemap: -------------------------------------------------------------------------------- 1 | framework module SnapKit { 2 | umbrella header "SnapKit-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/SnapKit-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_SnapKit : NSObject 3 | @end 4 | @implementation PodsDummy_SnapKit 5 | @end 6 | -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_oye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_oye.png -------------------------------------------------------------------------------- /EmojiKeyboard/Assets.xcassets/Input_icon_expression.imageset/biaoqing@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/Assets.xcassets/Input_icon_expression.imageset/biaoqing@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/Assets.xcassets/Input_icon_expression.imageset/biaoqing@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/Assets.xcassets/Input_icon_expression.imageset/biaoqing@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/Assets.xcassets/input_icon_comment.imageset/xiaoxi copy@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/Assets.xcassets/input_icon_comment.imageset/xiaoxi copy@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/Assets.xcassets/input_icon_comment.imageset/xiaoxi copy@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/Assets.xcassets/input_icon_comment.imageset/xiaoxi copy@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_juhan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_juhan.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_pili.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_pili.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_toule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_toule.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zana.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zana.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_beicui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_beicui.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_beidian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_beidian.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_bengkui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_bengkui.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_biefanwo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_biefanwo.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_geijin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_geijin.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haoaio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haoaio.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haobang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haobang.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haojiong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haojiong.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_holdzhu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_holdzhu.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_jiekexun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_jiekexun.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_jiujie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_jiujie.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_juhan@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_juhan@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_koubishi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_koubishi.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_kunsile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_kunsile.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_leifeng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_leifeng.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_meigui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_meigui.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_oye@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_oye@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_pili@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_pili@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiaoqiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiaoqiao.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiubite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiubite.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_toule@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_toule@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_tuijian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_tuijian.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiaohaha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiaohaha.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiudada.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiudada.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xuyuan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xuyuan.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_youyali.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_youyali.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zana@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zana@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zhenjing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zhenjing.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zhuanfa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zhuanfa.png -------------------------------------------------------------------------------- /EmojiKeyboard/Assets.xcassets/Input_icon_keyboard.imageset/Input_icon_keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/Assets.xcassets/Input_icon_keyboard.imageset/Input_icon_keyboard.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_beicui@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_beicui@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_beidian@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_beidian@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_bengkui@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_bengkui@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_buhaoyisi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_buhaoyisi.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_deyidexiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_deyidexiao.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_geijin@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_geijin@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haoaio@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haoaio@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haobang@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haobang@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haoxihuan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haoxihuan.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_holdzhu@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_holdzhu@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_jiujie@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_jiujie@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_kunsile@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_kunsile@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_leifeng@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_leifeng@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_meigui@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_meigui@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiubite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiubite@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiuguanzhu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiuguanzhu.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_tuijian@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_tuijian@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiudada@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiudada@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xuyuan@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xuyuan@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_youyali@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_youyali@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zhuanfa@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zhuanfa@2x.png -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-EmojiKeyboard/Pods-EmojiKeyboard.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_EmojiKeyboard { 2 | umbrella header "Pods-EmojiKeyboard-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /EmojiKeyboard/Assets.xcassets/Input_icon_keyboard.imageset/Input_icon_keyboard@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/Assets.xcassets/Input_icon_keyboard.imageset/Input_icon_keyboard@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/Assets.xcassets/Input_icon_keyboard.imageset/Input_icon_keyboard@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/Assets.xcassets/Input_icon_keyboard.imageset/Input_icon_keyboard@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_01@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_01@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_01@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_01@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_02@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_02@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_02@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_02@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_03@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_03@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_03@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_03@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_04@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_04@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_04@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_04@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_05@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_05@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_05@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_05@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_06@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_06@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_06@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_06@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_07@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_07@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_07@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_07@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_08@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_08@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_08@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_08@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_09@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_09@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_09@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_09@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_10@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_10@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_10@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_10@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_11@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_11@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_11@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_11@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_12@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_12@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_12@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_12@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_13@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_13@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_13@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_13@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_14@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_14@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_14@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_14@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_15@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_15@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_15@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_15@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_16@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_16@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/Input_emoji_16@3x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_biefanwo@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_biefanwo@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_buhaoyisi@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_buhaoyisi@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_deyidexiao@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_deyidexiao@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haojiong@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haojiong@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haoxihuan@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_haoxihuan@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_jiekexun@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_jiekexun@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_koubishi@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_koubishi@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_leiliumanmian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_leiliumanmian.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiaoqiao@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiaoqiao@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiuguanzhu@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_qiuguanzhu@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_quntiweiguan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_quntiweiguan.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xianghumobai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xianghumobai.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiangyixiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiangyixiang.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiaohaha@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiaohaha@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zaokuangzheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zaokuangzheng.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zhenjing@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zhenjing@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_buxiangshangban.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_buxiangshangban.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_quntiweiguan@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_quntiweiguan@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_shuaishuaishou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_shuaishuaishou.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xianghumobai@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xianghumobai@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiangyixiang@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_xiangyixiang@2x.png -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-EmojiKeyboard/Pods-EmojiKeyboard-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_EmojiKeyboard : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_EmojiKeyboard 5 | @end 6 | -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_buxiangshangban@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_buxiangshangban@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_leiliumanmian@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_leiliumanmian@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_shuaishuaishou@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_shuaishuaishou@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zaokuangzheng@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qqcc1388/EmojiKeyboard/HEAD/EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/lxh_zaokuangzheng@2x.png -------------------------------------------------------------------------------- /EmojiKeyboard.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/SnapKit-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /EmojiKeyboard.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment the next line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | target 'EmojiKeyboard' do 5 | # Comment the next line if you're not using Swift and don't want to use dynamic frameworks 6 | use_frameworks! 7 | 8 | # Pods for EmojiKeyboard 9 | pod 'SnapKit' 10 | 11 | end 12 | -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiAttachment.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EmojiAttachment.swift 3 | // EmojiKeyboard 4 | // 5 | // Created by Tiny on 2018/12/17. 6 | // Copyright © 2018年 hxq. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class EmojiAttachment: NSTextAttachment { 12 | 13 | /// ‘[哈哈]’ 14 | var chs: String? 15 | } 16 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SnapKit (4.0.1) 3 | 4 | DEPENDENCIES: 5 | - SnapKit 6 | 7 | SPEC REPOS: 8 | https://github.com/CocoaPods/Specs.git: 9 | - SnapKit 10 | 11 | SPEC CHECKSUMS: 12 | SnapKit: 0de968a9fec17499afa29683b05d0c775b6d1c29 13 | 14 | PODFILE CHECKSUM: 4363b64736343425c25fcae6751a9d715ee5c5d8 15 | 16 | COCOAPODS: 1.5.0 17 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - SnapKit (4.0.1) 3 | 4 | DEPENDENCIES: 5 | - SnapKit 6 | 7 | SPEC REPOS: 8 | https://github.com/CocoaPods/Specs.git: 9 | - SnapKit 10 | 11 | SPEC CHECKSUMS: 12 | SnapKit: 0de968a9fec17499afa29683b05d0c775b6d1c29 13 | 14 | PODFILE CHECKSUM: 4363b64736343425c25fcae6751a9d715ee5c5d8 15 | 16 | COCOAPODS: 1.5.0 17 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/SnapKit-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double SnapKitVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char SnapKitVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-EmojiKeyboard/Pods-EmojiKeyboard-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_EmojiKeyboardVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_EmojiKeyboardVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /EmojiKeyboard/Assets.xcassets/Input_icon_expression.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "biaoqing@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "biaoqing@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /EmojiKeyboard/Assets.xcassets/input_icon_comment.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "xiaoxi copy@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "xiaoxi copy@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/SnapKit.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SnapKit 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/SnapKit 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /EmojiKeyboard/Assets.xcassets/Input_icon_keyboard.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "Input_icon_keyboard.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "Input_icon_keyboard@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "Input_icon_keyboard@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/emojiPackage.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | packages 6 | 7 | 8 | name 9 | 默认表情 10 | id 11 | com.apple.emoji 12 | 13 | 14 | name 15 | 火星圈 16 | id 17 | com.hxq.emoji 18 | 19 | 20 | name 21 | 新浪表情 22 | id 23 | com.sina.emoji 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-EmojiKeyboard/Pods-EmojiKeyboard.debug.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "SnapKit" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-EmojiKeyboard/Pods-EmojiKeyboard.release.xcconfig: -------------------------------------------------------------------------------- 1 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' 5 | OTHER_CFLAGS = $(inherited) -iquote "${PODS_CONFIGURATION_BUILD_DIR}/SnapKit/SnapKit.framework/Headers" 6 | OTHER_LDFLAGS = $(inherited) -framework "SnapKit" 7 | OTHER_SWIFT_FLAGS = $(inherited) "-D" "COCOAPODS" 8 | PODS_BUILD_DIR = ${BUILD_DIR} 9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 10 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 11 | PODS_ROOT = ${SRCROOT}/Pods 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/SnapKit/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.0.1 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-EmojiKeyboard/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/SnapKit/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiManager.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EmojiManager.swift 3 | // EmojiKeyboard 4 | // 5 | // Created by Tiny on 2018/12/14. 6 | // Copyright © 2018年 hxq. All rights reserved. 7 | // 管理emoji 8 | 9 | import UIKit 10 | 11 | class EmojiManager: NSObject { 12 | 13 | static let shared: EmojiManager = EmojiManager() 14 | 15 | var emojiPackages = [EmojiPackage]() 16 | 17 | var deletePath: String? 18 | 19 | override init() { 20 | super.init() 21 | //加载Emoji 22 | guard let path = Bundle.main.path(forResource: "emojiPackage.plist", ofType: nil, inDirectory: "EmojiKeyBoard.bundle") else{ 23 | return 24 | } 25 | guard let dict = NSDictionary(contentsOfFile: path) as? [String:Any] else{ 26 | return 27 | } 28 | 29 | guard let array = dict["packages"] as? [[String:String]] else{ 30 | return 31 | } 32 | for dict in array { 33 | emojiPackages.append(EmojiPackage(dict: dict)) 34 | } 35 | 36 | //deletePath 37 | guard let deletePath = Bundle.main.path(forResource: "delete@3x.png", ofType: nil, inDirectory: "EmojiKeyBoard.bundle") else{ 38 | return 39 | } 40 | self.deletePath = deletePath 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-EmojiKeyboard/Pods-EmojiKeyboard-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## SnapKit 5 | 6 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy 9 | of this software and associated documentation files (the "Software"), to deal 10 | in the Software without restriction, including without limitation the rights 11 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 12 | copies of the Software, and to permit persons to whom the Software is 13 | furnished to do so, subject to the following conditions: 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | 26 | Generated by CocoaPods - https://cocoapods.org 27 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | public typealias ConstraintView = UIView 33 | #else 34 | public typealias ConstraintView = NSView 35 | #endif 36 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintInsets.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | public typealias ConstraintInsets = UIEdgeInsets 33 | #else 34 | public typealias ConstraintInsets = NSEdgeInsets 35 | #endif 36 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintLayoutSupport.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | @available(iOS 8.0, *) 33 | public typealias ConstraintLayoutSupport = UILayoutSupport 34 | #else 35 | public class ConstraintLayoutSupport {} 36 | #endif 37 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/UILayoutSupport+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #endif 27 | 28 | 29 | @available(iOS 8.0, *) 30 | public extension ConstraintLayoutSupport { 31 | 32 | public var snp: ConstraintLayoutSupportDSL { 33 | return ConstraintLayoutSupportDSL(support: self) 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintLayoutGuide+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #endif 27 | 28 | 29 | @available(iOS 9.0, OSX 10.11, *) 30 | public extension ConstraintLayoutGuide { 31 | 32 | public var snp: ConstraintLayoutGuideDSL { 33 | return ConstraintLayoutGuideDSL(guide: self) 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /EmojiKeyboard/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // EmojiKeyboard 4 | // 5 | // Created by Tiny on 2018/12/7. 6 | // Copyright © 2018年 hxq. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class ViewController: UIViewController { 12 | 13 | var textLabel: UILabel! 14 | var emojiInput: EmojiInputView! 15 | override func viewDidLoad() { 16 | super.viewDidLoad() 17 | // Do any additional setup after loading the view, typically from a nib. 18 | 19 | let label = UILabel() 20 | label.text = "xxxx" 21 | label.numberOfLines = 0 22 | label.font = UIFont.systemFont(ofSize: 14) 23 | textLabel = label 24 | view.addSubview(label) 25 | label.snp.makeConstraints { (make) in 26 | make.top.equalTo(100) 27 | make.left.equalTo(20) 28 | make.right.equalTo(-20) 29 | } 30 | 31 | emojiInput = EmojiInputView(frame: .zero) { [weak self] (text) in 32 | let attr = EmojiPrase.findEmojiAttr(emojiText: text, font: (self?.textLabel.font)!) 33 | self?.textLabel.attributedText = attr 34 | } 35 | emojiInput.placeHolder = "请输入内容" 36 | 37 | view.addSubview(emojiInput) 38 | emojiInput.snp.makeConstraints { (make) in 39 | make.left.equalTo(0) 40 | make.right.equalTo(0) 41 | make.bottom.equalTo(0) 42 | } 43 | } 44 | 45 | // override func touchesBegan(_ touches: Set, with event: UIEvent?) { 46 | // emojiInput.closeEmojikeyBoard() 47 | // } 48 | } 49 | 50 | 51 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintLayoutGuide.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | #if os(iOS) || os(tvOS) 32 | @available(iOS 9.0, *) 33 | public typealias ConstraintLayoutGuide = UILayoutGuide 34 | #else 35 | @available(OSX 10.11, *) 36 | public typealias ConstraintLayoutGuide = NSLayoutGuide 37 | #endif 38 | -------------------------------------------------------------------------------- /EmojiKeyboard/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | LSRequiresIPhoneOS 22 | 23 | UILaunchStoryboardName 24 | LaunchScreen 25 | UIMainStoryboardFile 26 | Main 27 | UIRequiredDeviceCapabilities 28 | 29 | armv7 30 | 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiPackage.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EmojiPackage.swift 3 | // EmojiKeyboard 4 | // 5 | // Created by Tiny on 2018/12/14. 6 | // Copyright © 2018年 hxq. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class EmojiPackage: NSObject { 12 | 13 | @objc var id: String? 14 | @objc var name: String? 15 | 16 | var emojis = [EmojiModel]() 17 | 18 | init(dict: [String: String]) { 19 | super.init() 20 | //一次性赋值 21 | setValuesForKeys(dict) 22 | 23 | guard let path = Bundle.main.path(forResource: "\(id!)/info.plist", ofType: nil, inDirectory: "EmojiKeyBoard.bundle")else { 24 | return 25 | } 26 | guard let dt = NSDictionary(contentsOfFile: path) as? [String:Any] else { 27 | return 28 | } 29 | guard let array = dt["emojis"] as? [[String:String]] else { 30 | return 31 | } 32 | for var (i,dx) in array.enumerated() { 33 | if let png = dx["png"] { 34 | dx["png"] = id! + "/" + png 35 | } 36 | if i%31 == 0 && i != 0{ 37 | emojis.append(EmojiModel(isDelete: true)) 38 | } 39 | emojis.append(EmojiModel(dict: dx)) 40 | } 41 | let r = emojis.count%32 42 | //填充空格 8*4 43 | if r != 0{ 44 | for _ in r..<31{ 45 | emojis.append(EmojiModel(isSpace: true)) 46 | } 47 | emojis.append(EmojiModel(isDelete: true)) 48 | } 49 | 50 | } 51 | 52 | override func setValue(_ value: Any?, forUndefinedKey key: String) { 53 | 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /EmojiKeyboard/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintConfig.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | public typealias ConstraintInterfaceLayoutDirection = UIUserInterfaceLayoutDirection 27 | #else 28 | import AppKit 29 | public typealias ConstraintInterfaceLayoutDirection = NSUserInterfaceLayoutDirection 30 | #endif 31 | 32 | 33 | public struct ConstraintConfig { 34 | 35 | public static var interfaceLayoutDirection: ConstraintInterfaceLayoutDirection = .leftToRight 36 | 37 | } 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xccheckout 23 | *.xcscmblueprint 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | *.ipa 28 | *.dSYM.zip 29 | *.dSYM 30 | 31 | ## Playgrounds 32 | timeline.xctimeline 33 | playground.xcworkspace 34 | 35 | # Swift Package Manager 36 | # 37 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 38 | # Packages/ 39 | # Package.pins 40 | # Package.resolved 41 | .build/ 42 | 43 | # CocoaPods 44 | # 45 | # We recommend against adding the Pods directory to your .gitignore. However 46 | # you should judge for yourself, the pros and cons are mentioned at: 47 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 48 | # 49 | # Pods/ 50 | 51 | # Carthage 52 | # 53 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 54 | # Carthage/Checkouts 55 | 56 | Carthage/Build 57 | 58 | # fastlane 59 | # 60 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 61 | # screenshots whenever they are needed. 62 | # For more information about the recommended setup visit: 63 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 64 | 65 | fastlane/report.xml 66 | fastlane/Preview.html 67 | fastlane/screenshots/**/*.png 68 | fastlane/test_output 69 | -------------------------------------------------------------------------------- /EmojiKeyboard/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EmojiModel.swift 3 | // EmojiKeyboard 4 | // 5 | // Created by Tiny on 2018/12/14. 6 | // Copyright © 2018年 hxq. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @objcMembers 12 | class EmojiModel: NSObject { 13 | 14 | var chs: String? 15 | var png: String?{ 16 | didSet{ 17 | if let png = png { 18 | if let path = Bundle.main.path(forResource: "EmojiKeyBoard.bundle", ofType: nil){ 19 | pngPath = path + "/" + png 20 | } 21 | 22 | } 23 | } 24 | } 25 | var code: String?{ 26 | didSet{ 27 | if let code = code{ 28 | //创建扫描器 29 | let scanner = Scanner(string: code) 30 | var result: UInt32 = 0 31 | //利用扫描器扫出结果 32 | scanner.scanHexInt32(&result) 33 | //将结果转换成字符 34 | let c = Character(UnicodeScalar(result)!) 35 | //将字符转换成字符串 36 | emojiCode = String(c) 37 | } 38 | } 39 | } 40 | 41 | /// emoji表情解析后的code码 42 | var emojiCode: String? 43 | 44 | /// 图片的绝对路径 45 | var pngPath: String? 46 | 47 | /// 是否是移除键 48 | var isDelete: Bool = false 49 | 50 | /// 是否是空格 51 | var isSpace: Bool = false 52 | 53 | init(dict: [String: String]) { 54 | super.init() 55 | 56 | setValuesForKeys(dict) 57 | 58 | } 59 | 60 | init(isDelete: Bool) { 61 | super.init() 62 | self.isDelete = true 63 | } 64 | 65 | init(isSpace: Bool) { 66 | super.init() 67 | self.isSpace = true 68 | } 69 | 70 | override func setValue(_ value: Any?, forUndefinedKey key: String) { 71 | 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintRelation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | internal enum ConstraintRelation : Int { 32 | case equal = 1 33 | case lessThanOrEqual 34 | case greaterThanOrEqual 35 | 36 | internal var layoutRelation: LayoutRelation { 37 | get { 38 | switch(self) { 39 | case .equal: 40 | return .equal 41 | case .lessThanOrEqual: 42 | return .lessThanOrEqual 43 | case .greaterThanOrEqual: 44 | return .greaterThanOrEqual 45 | } 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/Typealiases.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | import Foundation 25 | 26 | #if os(iOS) || os(tvOS) 27 | import UIKit 28 | #if swift(>=4.2) 29 | typealias LayoutRelation = NSLayoutConstraint.Relation 30 | typealias LayoutAttribute = NSLayoutConstraint.Attribute 31 | #else 32 | typealias LayoutRelation = NSLayoutRelation 33 | typealias LayoutAttribute = NSLayoutAttribute 34 | #endif 35 | typealias LayoutPriority = UILayoutPriority 36 | #else 37 | import AppKit 38 | typealias LayoutRelation = NSLayoutConstraint.Relation 39 | typealias LayoutAttribute = NSLayoutConstraint.Attribute 40 | typealias LayoutPriority = NSLayoutConstraint.Priority 41 | #endif 42 | 43 | -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiPrase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // EmojiPrase.swift 3 | // EmojiKeyboard 4 | // 5 | // Created by Tiny on 2018/12/17. 6 | // Copyright © 2018年 hxq. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | class EmojiPrase: NSObject { 12 | 13 | /// lineHeight 文字单行高度 14 | static func findEmojiAttr(emojiText: String, font: UIFont) -> NSMutableAttributedString?{ 15 | //将emojiText转换成富文本 16 | // 1234[哈哈] ,将哈哈解析出来 17 | let pattern = "\\[.*?\\]" 18 | 19 | guard let regular = try? NSRegularExpression(pattern: pattern, options: []) else{ 20 | return nil 21 | } 22 | let attr = NSMutableAttributedString(string: emojiText) 23 | 24 | let results = regular.matches(in: emojiText, options: [], range: NSRange(location: 0, length: attr.length)) 25 | 26 | //从后往前遍历 27 | for result in results.reversed(){ 28 | //将字符串截取出来 29 | let chs = (emojiText as NSString).substring(with: result.range) 30 | 31 | //将字符串截出来然后匹配 32 | if let pngPath = findChsPngPath(chs: chs){ 33 | let attach = NSTextAttachment() 34 | attach.image = UIImage(contentsOfFile: pngPath) 35 | attach.bounds = CGRect(x: 0, y: -4, width: font.lineHeight, height: font.lineHeight) 36 | attr.replaceCharacters(in: result.range, with: NSAttributedString(attachment: attach)) 37 | } 38 | } 39 | return attr 40 | } 41 | 42 | /// 查询chs到表情库中 43 | private static func findChsPngPath(chs: String) -> String?{ 44 | let manager = EmojiManager.shared 45 | for package in manager.emojiPackages { 46 | for emoji in package.emojis{ 47 | if chs == emoji.chs{ 48 | return emoji.pngPath 49 | } 50 | } 51 | } 52 | return nil 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintMakerFinalizable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class ConstraintMakerFinalizable { 32 | 33 | internal let description: ConstraintDescription 34 | 35 | internal init(_ description: ConstraintDescription) { 36 | self.description = description 37 | } 38 | 39 | @discardableResult 40 | public func labeled(_ label: String) -> ConstraintMakerFinalizable { 41 | self.description.label = label 42 | return self 43 | } 44 | 45 | public var constraint: Constraint { 46 | return self.description.constraint! 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /EmojiKeyboard/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "size" : "20x20", 6 | "scale" : "2x" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "size" : "20x20", 11 | "scale" : "3x" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "size" : "29x29", 16 | "scale" : "2x" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "size" : "29x29", 21 | "scale" : "3x" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "size" : "40x40", 26 | "scale" : "2x" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "size" : "40x40", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "size" : "60x60", 36 | "scale" : "2x" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "size" : "60x60", 41 | "scale" : "3x" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "size" : "20x20", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "size" : "20x20", 51 | "scale" : "2x" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "size" : "29x29", 56 | "scale" : "1x" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "size" : "29x29", 61 | "scale" : "2x" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "size" : "40x40", 66 | "scale" : "1x" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "size" : "40x40", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "size" : "76x76", 76 | "scale" : "1x" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "size" : "76x76", 81 | "scale" : "2x" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "size" : "83.5x83.5", 86 | "scale" : "2x" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "size" : "1024x1024", 91 | "scale" : "1x" 92 | } 93 | ], 94 | "info" : { 95 | "version" : 1, 96 | "author" : "xcode" 97 | } 98 | } -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintRelatableTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintRelatableTarget { 32 | } 33 | 34 | extension Int: ConstraintRelatableTarget { 35 | } 36 | 37 | extension UInt: ConstraintRelatableTarget { 38 | } 39 | 40 | extension Float: ConstraintRelatableTarget { 41 | } 42 | 43 | extension Double: ConstraintRelatableTarget { 44 | } 45 | 46 | extension CGFloat: ConstraintRelatableTarget { 47 | } 48 | 49 | extension CGSize: ConstraintRelatableTarget { 50 | } 51 | 52 | extension CGPoint: ConstraintRelatableTarget { 53 | } 54 | 55 | extension ConstraintInsets: ConstraintRelatableTarget { 56 | } 57 | 58 | extension ConstraintItem: ConstraintRelatableTarget { 59 | } 60 | 61 | extension ConstraintView: ConstraintRelatableTarget { 62 | } 63 | 64 | @available(iOS 9.0, OSX 10.11, *) 65 | extension ConstraintLayoutGuide: ConstraintRelatableTarget { 66 | } 67 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/LayoutConstraint.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class LayoutConstraint : NSLayoutConstraint { 32 | 33 | public var label: String? { 34 | get { 35 | return self.identifier 36 | } 37 | set { 38 | self.identifier = newValue 39 | } 40 | } 41 | 42 | internal weak var constraint: Constraint? = nil 43 | 44 | } 45 | 46 | internal func ==(lhs: LayoutConstraint, rhs: LayoutConstraint) -> Bool { 47 | guard lhs.firstItem === rhs.firstItem && 48 | lhs.secondItem === rhs.secondItem && 49 | lhs.firstAttribute == rhs.firstAttribute && 50 | lhs.secondAttribute == rhs.secondAttribute && 51 | lhs.relation == rhs.relation && 52 | lhs.priority == rhs.priority && 53 | lhs.multiplier == rhs.multiplier else { 54 | return false 55 | } 56 | return true 57 | } 58 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintLayoutSupportDSL.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | @available(iOS 8.0, *) 32 | public struct ConstraintLayoutSupportDSL: ConstraintDSL { 33 | 34 | public var target: AnyObject? { 35 | return self.support 36 | } 37 | 38 | internal let support: ConstraintLayoutSupport 39 | 40 | internal init(support: ConstraintLayoutSupport) { 41 | self.support = support 42 | 43 | } 44 | 45 | public var top: ConstraintItem { 46 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.top) 47 | } 48 | 49 | public var bottom: ConstraintItem { 50 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottom) 51 | } 52 | 53 | public var height: ConstraintItem { 54 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.height) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /EmojiKeyboard/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // EmojiKeyboard 4 | // 5 | // Created by Tiny on 2018/12/7. 6 | // Copyright © 2018年 hxq. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | var window: UIWindow? 15 | 16 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 17 | // Override point for customization after application launch. 18 | return true 19 | } 20 | 21 | func applicationWillResignActive(_ application: UIApplication) { 22 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 23 | // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game. 24 | } 25 | 26 | func applicationDidEnterBackground(_ application: UIApplication) { 27 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 28 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. 29 | } 30 | 31 | func applicationWillEnterForeground(_ application: UIApplication) { 32 | // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background. 33 | } 34 | 35 | func applicationDidBecomeActive(_ application: UIApplication) { 36 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 37 | } 38 | 39 | func applicationWillTerminate(_ application: UIApplication) { 40 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 41 | } 42 | 43 | 44 | } 45 | 46 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public final class ConstraintItem { 32 | 33 | internal weak var target: AnyObject? 34 | internal let attributes: ConstraintAttributes 35 | 36 | internal init(target: AnyObject?, attributes: ConstraintAttributes) { 37 | self.target = target 38 | self.attributes = attributes 39 | } 40 | 41 | internal var layoutConstraintItem: LayoutConstraintItem? { 42 | return self.target as? LayoutConstraintItem 43 | } 44 | 45 | } 46 | 47 | public func ==(lhs: ConstraintItem, rhs: ConstraintItem) -> Bool { 48 | // pointer equality 49 | guard lhs !== rhs else { 50 | return true 51 | } 52 | 53 | // must both have valid targets and identical attributes 54 | guard let target1 = lhs.target, 55 | let target2 = rhs.target, 56 | target1 === target2 && lhs.attributes == rhs.attributes else { 57 | return false 58 | } 59 | 60 | return true 61 | } 62 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintMakerEditable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class ConstraintMakerEditable: ConstraintMakerPriortizable { 32 | 33 | @discardableResult 34 | public func multipliedBy(_ amount: ConstraintMultiplierTarget) -> ConstraintMakerEditable { 35 | self.description.multiplier = amount 36 | return self 37 | } 38 | 39 | @discardableResult 40 | public func dividedBy(_ amount: ConstraintMultiplierTarget) -> ConstraintMakerEditable { 41 | return self.multipliedBy(1.0 / amount.constraintMultiplierTargetValue) 42 | } 43 | 44 | @discardableResult 45 | public func offset(_ amount: ConstraintOffsetTarget) -> ConstraintMakerEditable { 46 | self.description.constant = amount.constraintOffsetTargetValue 47 | return self 48 | } 49 | 50 | @discardableResult 51 | public func inset(_ amount: ConstraintInsetTarget) -> ConstraintMakerEditable { 52 | self.description.constant = amount.constraintInsetTargetValue 53 | return self 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-EmojiKeyboard/Pods-EmojiKeyboard-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 18 | 19 | Permission is hereby granted, free of charge, to any person obtaining a copy 20 | of this software and associated documentation files (the "Software"), to deal 21 | in the Software without restriction, including without limitation the rights 22 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 23 | copies of the Software, and to permit persons to whom the Software is 24 | furnished to do so, subject to the following conditions: 25 | 26 | The above copyright notice and this permission notice shall be included in 27 | all copies or substantial portions of the Software. 28 | 29 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 30 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 31 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 32 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 33 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 34 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 35 | THE SOFTWARE. 36 | 37 | License 38 | MIT 39 | Title 40 | SnapKit 41 | Type 42 | PSGroupSpecifier 43 | 44 | 45 | FooterText 46 | Generated by CocoaPods - https://cocoapods.org 47 | Title 48 | 49 | Type 50 | PSGroupSpecifier 51 | 52 | 53 | StringsTable 54 | Acknowledgements 55 | Title 56 | Acknowledgements 57 | 58 | 59 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintMultiplierTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintMultiplierTarget { 32 | 33 | var constraintMultiplierTargetValue: CGFloat { get } 34 | 35 | } 36 | 37 | extension Int: ConstraintMultiplierTarget { 38 | 39 | public var constraintMultiplierTargetValue: CGFloat { 40 | return CGFloat(self) 41 | } 42 | 43 | } 44 | 45 | extension UInt: ConstraintMultiplierTarget { 46 | 47 | public var constraintMultiplierTargetValue: CGFloat { 48 | return CGFloat(self) 49 | } 50 | 51 | } 52 | 53 | extension Float: ConstraintMultiplierTarget { 54 | 55 | public var constraintMultiplierTargetValue: CGFloat { 56 | return CGFloat(self) 57 | } 58 | 59 | } 60 | 61 | extension Double: ConstraintMultiplierTarget { 62 | 63 | public var constraintMultiplierTargetValue: CGFloat { 64 | return CGFloat(self) 65 | } 66 | 67 | } 68 | 69 | extension CGFloat: ConstraintMultiplierTarget { 70 | 71 | public var constraintMultiplierTargetValue: CGFloat { 72 | return self 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintOffsetTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintOffsetTarget: ConstraintConstantTarget { 32 | } 33 | 34 | extension Int: ConstraintOffsetTarget { 35 | } 36 | 37 | extension UInt: ConstraintOffsetTarget { 38 | } 39 | 40 | extension Float: ConstraintOffsetTarget { 41 | } 42 | 43 | extension Double: ConstraintOffsetTarget { 44 | } 45 | 46 | extension CGFloat: ConstraintOffsetTarget { 47 | } 48 | 49 | extension ConstraintOffsetTarget { 50 | 51 | internal var constraintOffsetTargetValue: CGFloat { 52 | let offset: CGFloat 53 | if let amount = self as? Float { 54 | offset = CGFloat(amount) 55 | } else if let amount = self as? Double { 56 | offset = CGFloat(amount) 57 | } else if let amount = self as? CGFloat { 58 | offset = CGFloat(amount) 59 | } else if let amount = self as? Int { 60 | offset = CGFloat(amount) 61 | } else if let amount = self as? UInt { 62 | offset = CGFloat(amount) 63 | } else { 64 | offset = 0.0 65 | } 66 | return offset 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintPriorityTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintPriorityTarget { 32 | 33 | var constraintPriorityTargetValue: Float { get } 34 | 35 | } 36 | 37 | extension Int: ConstraintPriorityTarget { 38 | 39 | public var constraintPriorityTargetValue: Float { 40 | return Float(self) 41 | } 42 | 43 | } 44 | 45 | extension UInt: ConstraintPriorityTarget { 46 | 47 | public var constraintPriorityTargetValue: Float { 48 | return Float(self) 49 | } 50 | 51 | } 52 | 53 | extension Float: ConstraintPriorityTarget { 54 | 55 | public var constraintPriorityTargetValue: Float { 56 | return self 57 | } 58 | 59 | } 60 | 61 | extension Double: ConstraintPriorityTarget { 62 | 63 | public var constraintPriorityTargetValue: Float { 64 | return Float(self) 65 | } 66 | 67 | } 68 | 69 | extension CGFloat: ConstraintPriorityTarget { 70 | 71 | public var constraintPriorityTargetValue: Float { 72 | return Float(self) 73 | } 74 | 75 | } 76 | 77 | #if os(iOS) || os(tvOS) 78 | extension UILayoutPriority: ConstraintPriorityTarget { 79 | 80 | public var constraintPriorityTargetValue: Float { 81 | return self.rawValue 82 | } 83 | 84 | } 85 | #endif 86 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintLayoutGuideDSL.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | @available(iOS 9.0, OSX 10.11, *) 32 | public struct ConstraintLayoutGuideDSL: ConstraintAttributesDSL { 33 | 34 | @discardableResult 35 | public func prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { 36 | return ConstraintMaker.prepareConstraints(item: self.guide, closure: closure) 37 | } 38 | 39 | public func makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 40 | ConstraintMaker.makeConstraints(item: self.guide, closure: closure) 41 | } 42 | 43 | public func remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 44 | ConstraintMaker.remakeConstraints(item: self.guide, closure: closure) 45 | } 46 | 47 | public func updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 48 | ConstraintMaker.updateConstraints(item: self.guide, closure: closure) 49 | } 50 | 51 | public func removeConstraints() { 52 | ConstraintMaker.removeConstraints(item: self.guide) 53 | } 54 | 55 | public var target: AnyObject? { 56 | return self.guide 57 | } 58 | 59 | internal let guide: ConstraintLayoutGuide 60 | 61 | internal init(guide: ConstraintLayoutGuide) { 62 | self.guide = guide 63 | 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintPriority.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | public struct ConstraintPriority : ExpressibleByFloatLiteral, Equatable, Strideable { 31 | public typealias FloatLiteralType = Float 32 | 33 | public let value: Float 34 | 35 | public init(floatLiteral value: Float) { 36 | self.value = value 37 | } 38 | 39 | public init(_ value: Float) { 40 | self.value = value 41 | } 42 | 43 | public static var required: ConstraintPriority { 44 | return 1000.0 45 | } 46 | 47 | public static var high: ConstraintPriority { 48 | return 750.0 49 | } 50 | 51 | public static var medium: ConstraintPriority { 52 | #if os(OSX) 53 | return 501.0 54 | #else 55 | return 500.0 56 | #endif 57 | 58 | } 59 | 60 | public static var low: ConstraintPriority { 61 | return 250.0 62 | } 63 | 64 | public static func ==(lhs: ConstraintPriority, rhs: ConstraintPriority) -> Bool { 65 | return lhs.value == rhs.value 66 | } 67 | 68 | // MARK: Strideable 69 | 70 | public func advanced(by n: FloatLiteralType) -> ConstraintPriority { 71 | return ConstraintPriority(floatLiteral: value + n) 72 | } 73 | 74 | public func distance(to other: ConstraintPriority) -> FloatLiteralType { 75 | return other.value - value 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.hxq.emoji/info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | id 6 | com.hxq.emoji 7 | emojis 8 | 9 | 10 | chs 11 | [我觉得不行] 12 | png 13 | Input_emoji_01 14 | 15 | 16 | chs 17 | [我超难受] 18 | png 19 | Input_emoji_02 20 | 21 | 22 | chs 23 | [呵呵] 24 | png 25 | Input_emoji_03 26 | 27 | 28 | chs 29 | [我牙白吗] 30 | png 31 | Input_emoji_04 32 | 33 | 34 | chs 35 | [我超晕的] 36 | png 37 | Input_emoji_05 38 | 39 | 40 | chs 41 | [我超迷的] 42 | png 43 | Input_emoji_06 44 | 45 | 46 | chs 47 | [我超嗨的] 48 | png 49 | Input_emoji_07 50 | 51 | 52 | chs 53 | [啵啵] 54 | png 55 | Input_emoji_08 56 | 57 | 58 | chs 59 | [我超萌] 60 | png 61 | Input_emoji_09 62 | 63 | 64 | chs 65 | [我超气的] 66 | png 67 | Input_emoji_10 68 | 69 | 70 | chs 71 | [我超浪的] 72 | png 73 | Input_emoji_11 74 | 75 | 76 | chs 77 | [我超丧的] 78 | png 79 | Input_emoji_12 80 | 81 | 82 | chs 83 | [踩死你] 84 | png 85 | Input_emoji_13 86 | 87 | 88 | chs 89 | [我超冷的] 90 | png 91 | Input_emoji_14 92 | 93 | 94 | chs 95 | [我超汗的] 96 | png 97 | Input_emoji_15 98 | 99 | 100 | chs 101 | [我超雷的] 102 | png 103 | Input_emoji_16 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintMakerPriortizable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class ConstraintMakerPriortizable: ConstraintMakerFinalizable { 32 | 33 | @discardableResult 34 | public func priority(_ amount: ConstraintPriority) -> ConstraintMakerFinalizable { 35 | self.description.priority = amount.value 36 | return self 37 | } 38 | 39 | @discardableResult 40 | public func priority(_ amount: ConstraintPriorityTarget) -> ConstraintMakerFinalizable { 41 | self.description.priority = amount 42 | return self 43 | } 44 | 45 | @available(*, deprecated:3.0, message:"Use priority(.required) instead.") 46 | @discardableResult 47 | public func priorityRequired() -> ConstraintMakerFinalizable { 48 | return self.priority(.required) 49 | } 50 | 51 | @available(*, deprecated:3.0, message:"Use priority(.high) instead.") 52 | @discardableResult 53 | public func priorityHigh() -> ConstraintMakerFinalizable { 54 | return self.priority(.high) 55 | } 56 | 57 | @available(*, deprecated:3.0, message:"Use priority(.medium) instead.") 58 | @discardableResult 59 | public func priorityMedium() -> ConstraintMakerFinalizable { 60 | return self.priority(.medium) 61 | } 62 | 63 | @available(*, deprecated:3.0, message:"Use priority(.low) instead.") 64 | @discardableResult 65 | public func priorityLow() -> ConstraintMakerFinalizable { 66 | return self.priority(.low) 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintDescription.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class ConstraintDescription { 32 | 33 | internal let item: LayoutConstraintItem 34 | internal var attributes: ConstraintAttributes 35 | internal var relation: ConstraintRelation? = nil 36 | internal var sourceLocation: (String, UInt)? = nil 37 | internal var label: String? = nil 38 | internal var related: ConstraintItem? = nil 39 | internal var multiplier: ConstraintMultiplierTarget = 1.0 40 | internal var constant: ConstraintConstantTarget = 0.0 41 | internal var priority: ConstraintPriorityTarget = 1000.0 42 | internal lazy var constraint: Constraint? = { 43 | guard let relation = self.relation, 44 | let related = self.related, 45 | let sourceLocation = self.sourceLocation else { 46 | return nil 47 | } 48 | let from = ConstraintItem(target: self.item, attributes: self.attributes) 49 | 50 | return Constraint( 51 | from: from, 52 | to: related, 53 | relation: relation, 54 | sourceLocation: sourceLocation, 55 | label: self.label, 56 | multiplier: self.multiplier, 57 | constant: self.constant, 58 | priority: self.priority 59 | ) 60 | }() 61 | 62 | // MARK: Initialization 63 | 64 | internal init(item: LayoutConstraintItem, attributes: ConstraintAttributes) { 65 | self.item = item 66 | self.attributes = attributes 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintInsetTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintInsetTarget: ConstraintConstantTarget { 32 | } 33 | 34 | extension Int: ConstraintInsetTarget { 35 | } 36 | 37 | extension UInt: ConstraintInsetTarget { 38 | } 39 | 40 | extension Float: ConstraintInsetTarget { 41 | } 42 | 43 | extension Double: ConstraintInsetTarget { 44 | } 45 | 46 | extension CGFloat: ConstraintInsetTarget { 47 | } 48 | 49 | extension ConstraintInsets: ConstraintInsetTarget { 50 | } 51 | 52 | extension ConstraintInsetTarget { 53 | 54 | internal var constraintInsetTargetValue: ConstraintInsets { 55 | if let amount = self as? ConstraintInsets { 56 | return amount 57 | } else if let amount = self as? Float { 58 | return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) 59 | } else if let amount = self as? Double { 60 | return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) 61 | } else if let amount = self as? CGFloat { 62 | return ConstraintInsets(top: amount, left: amount, bottom: amount, right: amount) 63 | } else if let amount = self as? Int { 64 | return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) 65 | } else if let amount = self as? UInt { 66 | return ConstraintInsets(top: CGFloat(amount), left: CGFloat(amount), bottom: CGFloat(amount), right: CGFloat(amount)) 67 | } else { 68 | return ConstraintInsets(top: 0, left: 0, bottom: 0, right: 0) 69 | } 70 | } 71 | 72 | } 73 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/LayoutConstraintItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol LayoutConstraintItem: class { 32 | } 33 | 34 | @available(iOS 9.0, OSX 10.11, *) 35 | extension ConstraintLayoutGuide : LayoutConstraintItem { 36 | } 37 | 38 | extension ConstraintView : LayoutConstraintItem { 39 | } 40 | 41 | 42 | extension LayoutConstraintItem { 43 | 44 | internal func prepare() { 45 | if let view = self as? ConstraintView { 46 | view.translatesAutoresizingMaskIntoConstraints = false 47 | } 48 | } 49 | 50 | internal var superview: ConstraintView? { 51 | if let view = self as? ConstraintView { 52 | return view.superview 53 | } 54 | 55 | if #available(iOS 9.0, OSX 10.11, *), let guide = self as? ConstraintLayoutGuide { 56 | return guide.owningView 57 | } 58 | 59 | return nil 60 | } 61 | internal var constraints: [Constraint] { 62 | return self.constraintsSet.allObjects as! [Constraint] 63 | } 64 | 65 | internal func add(constraints: [Constraint]) { 66 | let constraintsSet = self.constraintsSet 67 | for constraint in constraints { 68 | constraintsSet.add(constraint) 69 | } 70 | } 71 | 72 | internal func remove(constraints: [Constraint]) { 73 | let constraintsSet = self.constraintsSet 74 | for constraint in constraints { 75 | constraintsSet.remove(constraint) 76 | } 77 | } 78 | 79 | private var constraintsSet: NSMutableSet { 80 | let constraintsSet: NSMutableSet 81 | 82 | if let existing = objc_getAssociatedObject(self, &constraintsKey) as? NSMutableSet { 83 | constraintsSet = existing 84 | } else { 85 | constraintsSet = NSMutableSet() 86 | objc_setAssociatedObject(self, &constraintsKey, constraintsSet, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) 87 | } 88 | return constraintsSet 89 | 90 | } 91 | 92 | } 93 | private var constraintsKey: UInt8 = 0 94 | -------------------------------------------------------------------------------- /Pods/SnapKit/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | SnapKit is a DSL to make Auto Layout easy on both iOS and OS X. 4 | 5 | [![Build Status](https://travis-ci.org/SnapKit/SnapKit.svg)](https://travis-ci.org/SnapKit/SnapKit) 6 | [![Platform](https://img.shields.io/cocoapods/p/SnapKit.svg?style=flat)](https://github.com/SnapKit/SnapKit) 7 | [![Cocoapods Compatible](https://img.shields.io/cocoapods/v/SnapKit.svg)](https://cocoapods.org/pods/SnapKit) 8 | [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) 9 | 10 | #### ⚠️ **To use with Swift 3.x please ensure you are using >= 3.0.0** ⚠️ 11 | #### ⚠️ **To use with Swift 4.x please ensure you are using >= 4.0.0** ⚠️ 12 | 13 | ## Contents 14 | 15 | - [Requirements](#requirements) 16 | - [Migration Guides](#migration-guides) 17 | - [Communication](#communication) 18 | - [Installation](#installation) 19 | - [Usage](#usage) 20 | - [Credits](#credits) 21 | - [License](#license) 22 | 23 | ## Requirements 24 | 25 | - iOS 8.0+ / Mac OS X 10.11+ / tvOS 9.0+ 26 | - Xcode 9.0+ 27 | - Swift 3.0+ 28 | 29 | ## Communication 30 | 31 | - If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/snapkit). (Tag 'snapkit') 32 | - If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/snapkit). 33 | - If you **found a bug**, open an issue. 34 | - If you **have a feature request**, open an issue. 35 | - If you **want to contribute**, submit a pull request. 36 | 37 | 38 | ## Installation 39 | 40 | ### CocoaPods 41 | 42 | [CocoaPods](http://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command: 43 | 44 | ```bash 45 | $ gem install cocoapods 46 | ``` 47 | 48 | > CocoaPods 1.1.0+ is required to build SnapKit 4.0.0+. 49 | 50 | To integrate SnapKit into your Xcode project using CocoaPods, specify it in your `Podfile`: 51 | 52 | ```ruby 53 | source 'https://github.com/CocoaPods/Specs.git' 54 | platform :ios, '10.0' 55 | use_frameworks! 56 | 57 | target '' do 58 | pod 'SnapKit', '~> 4.0.0' 59 | end 60 | ``` 61 | 62 | Then, run the following command: 63 | 64 | ```bash 65 | $ pod install 66 | ``` 67 | 68 | ### Carthage 69 | 70 | [Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. 71 | 72 | You can install Carthage with [Homebrew](http://brew.sh/) using the following command: 73 | 74 | ```bash 75 | $ brew update 76 | $ brew install carthage 77 | ``` 78 | 79 | To integrate SnapKit into your Xcode project using Carthage, specify it in your `Cartfile`: 80 | 81 | ```ogdl 82 | github "SnapKit/SnapKit" ~> 4.0.0 83 | ``` 84 | 85 | Run `carthage update` to build the framework and drag the built `SnapKit.framework` into your Xcode project. 86 | 87 | ### Manually 88 | 89 | If you prefer not to use either of the aforementioned dependency managers, you can integrate SnapKit into your project manually. 90 | 91 | --- 92 | 93 | ## Usage 94 | 95 | ### Quick Start 96 | 97 | ```swift 98 | import SnapKit 99 | 100 | class MyViewController: UIViewController { 101 | 102 | lazy var box = UIView() 103 | 104 | override func viewDidLoad() { 105 | super.viewDidLoad() 106 | 107 | self.view.addSubview(box) 108 | box.snp.makeConstraints { (make) -> Void in 109 | make.width.height.equalTo(50) 110 | make.center.equalTo(self.view) 111 | } 112 | } 113 | 114 | } 115 | ``` 116 | 117 | ### Resources 118 | 119 | - [Documentation](http://snapkit.io/docs/) 120 | - [F.A.Q.](http://snapkit.io/faq/) 121 | 122 | ## Credits 123 | 124 | - Robert Payne ([@robertjpayne](https://twitter.com/robertjpayne)) 125 | - Many other contributors 126 | 127 | ## License 128 | 129 | SnapKit is released under the MIT license. See LICENSE for details. 130 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintViewDSL.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public struct ConstraintViewDSL: ConstraintAttributesDSL { 32 | 33 | @discardableResult 34 | public func prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { 35 | return ConstraintMaker.prepareConstraints(item: self.view, closure: closure) 36 | } 37 | 38 | public func makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 39 | ConstraintMaker.makeConstraints(item: self.view, closure: closure) 40 | } 41 | 42 | public func remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 43 | ConstraintMaker.remakeConstraints(item: self.view, closure: closure) 44 | } 45 | 46 | public func updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 47 | ConstraintMaker.updateConstraints(item: self.view, closure: closure) 48 | } 49 | 50 | public func removeConstraints() { 51 | ConstraintMaker.removeConstraints(item: self.view) 52 | } 53 | 54 | public var contentHuggingHorizontalPriority: Float { 55 | get { 56 | return self.view.contentHuggingPriority(for: .horizontal).rawValue 57 | } 58 | set { 59 | self.view.setContentHuggingPriority(LayoutPriority(rawValue: newValue), for: .horizontal) 60 | } 61 | } 62 | 63 | public var contentHuggingVerticalPriority: Float { 64 | get { 65 | return self.view.contentHuggingPriority(for: .vertical).rawValue 66 | } 67 | set { 68 | self.view.setContentHuggingPriority(LayoutPriority(rawValue: newValue), for: .vertical) 69 | } 70 | } 71 | 72 | public var contentCompressionResistanceHorizontalPriority: Float { 73 | get { 74 | return self.view.contentCompressionResistancePriority(for: .horizontal).rawValue 75 | } 76 | set { 77 | self.view.setContentCompressionResistancePriority(LayoutPriority(rawValue: newValue), for: .horizontal) 78 | } 79 | } 80 | 81 | public var contentCompressionResistanceVerticalPriority: Float { 82 | get { 83 | return self.view.contentCompressionResistancePriority(for: .vertical).rawValue 84 | } 85 | set { 86 | self.view.setContentCompressionResistancePriority(LayoutPriority(rawValue: newValue), for: .vertical) 87 | } 88 | } 89 | 90 | public var target: AnyObject? { 91 | return self.view 92 | } 93 | 94 | internal let view: ConstraintView 95 | 96 | internal init(view: ConstraintView) { 97 | self.view = view 98 | 99 | } 100 | 101 | } 102 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintMakerRelatable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class ConstraintMakerRelatable { 32 | 33 | internal let description: ConstraintDescription 34 | 35 | internal init(_ description: ConstraintDescription) { 36 | self.description = description 37 | } 38 | 39 | internal func relatedTo(_ other: ConstraintRelatableTarget, relation: ConstraintRelation, file: String, line: UInt) -> ConstraintMakerEditable { 40 | let related: ConstraintItem 41 | let constant: ConstraintConstantTarget 42 | 43 | if let other = other as? ConstraintItem { 44 | guard other.attributes == ConstraintAttributes.none || 45 | other.attributes.layoutAttributes.count <= 1 || 46 | other.attributes.layoutAttributes == self.description.attributes.layoutAttributes || 47 | other.attributes == .edges && self.description.attributes == .margins || 48 | other.attributes == .margins && self.description.attributes == .edges else { 49 | fatalError("Cannot constraint to multiple non identical attributes. (\(file), \(line))"); 50 | } 51 | 52 | related = other 53 | constant = 0.0 54 | } else if let other = other as? ConstraintView { 55 | related = ConstraintItem(target: other, attributes: ConstraintAttributes.none) 56 | constant = 0.0 57 | } else if let other = other as? ConstraintConstantTarget { 58 | related = ConstraintItem(target: nil, attributes: ConstraintAttributes.none) 59 | constant = other 60 | } else if #available(iOS 9.0, OSX 10.11, *), let other = other as? ConstraintLayoutGuide { 61 | related = ConstraintItem(target: other, attributes: ConstraintAttributes.none) 62 | constant = 0.0 63 | } else { 64 | fatalError("Invalid constraint. (\(file), \(line))") 65 | } 66 | 67 | let editable = ConstraintMakerEditable(self.description) 68 | editable.description.sourceLocation = (file, line) 69 | editable.description.relation = relation 70 | editable.description.related = related 71 | editable.description.constant = constant 72 | return editable 73 | } 74 | 75 | @discardableResult 76 | public func equalTo(_ other: ConstraintRelatableTarget, _ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { 77 | return self.relatedTo(other, relation: .equal, file: file, line: line) 78 | } 79 | 80 | @discardableResult 81 | public func equalToSuperview(_ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { 82 | guard let other = self.description.item.superview else { 83 | fatalError("Expected superview but found nil when attempting make constraint `equalToSuperview`.") 84 | } 85 | return self.relatedTo(other, relation: .equal, file: file, line: line) 86 | } 87 | 88 | @discardableResult 89 | public func lessThanOrEqualTo(_ other: ConstraintRelatableTarget, _ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { 90 | return self.relatedTo(other, relation: .lessThanOrEqual, file: file, line: line) 91 | } 92 | 93 | @discardableResult 94 | public func lessThanOrEqualToSuperview(_ file: String = #file, _ line: UInt = #line) -> ConstraintMakerEditable { 95 | guard let other = self.description.item.superview else { 96 | fatalError("Expected superview but found nil when attempting make constraint `lessThanOrEqualToSuperview`.") 97 | } 98 | return self.relatedTo(other, relation: .lessThanOrEqual, file: file, line: line) 99 | } 100 | 101 | @discardableResult 102 | public func greaterThanOrEqualTo(_ other: ConstraintRelatableTarget, _ file: String = #file, line: UInt = #line) -> ConstraintMakerEditable { 103 | return self.relatedTo(other, relation: .greaterThanOrEqual, file: file, line: line) 104 | } 105 | 106 | @discardableResult 107 | public func greaterThanOrEqualToSuperview(_ file: String = #file, line: UInt = #line) -> ConstraintMakerEditable { 108 | guard let other = self.description.item.superview else { 109 | fatalError("Expected superview but found nil when attempting make constraint `greaterThanOrEqualToSuperview`.") 110 | } 111 | return self.relatedTo(other, relation: .greaterThanOrEqual, file: file, line: line) 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintMakerExtendable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public class ConstraintMakerExtendable: ConstraintMakerRelatable { 32 | 33 | public var left: ConstraintMakerExtendable { 34 | self.description.attributes += .left 35 | return self 36 | } 37 | 38 | public var top: ConstraintMakerExtendable { 39 | self.description.attributes += .top 40 | return self 41 | } 42 | 43 | public var bottom: ConstraintMakerExtendable { 44 | self.description.attributes += .bottom 45 | return self 46 | } 47 | 48 | public var right: ConstraintMakerExtendable { 49 | self.description.attributes += .right 50 | return self 51 | } 52 | 53 | public var leading: ConstraintMakerExtendable { 54 | self.description.attributes += .leading 55 | return self 56 | } 57 | 58 | public var trailing: ConstraintMakerExtendable { 59 | self.description.attributes += .trailing 60 | return self 61 | } 62 | 63 | public var width: ConstraintMakerExtendable { 64 | self.description.attributes += .width 65 | return self 66 | } 67 | 68 | public var height: ConstraintMakerExtendable { 69 | self.description.attributes += .height 70 | return self 71 | } 72 | 73 | public var centerX: ConstraintMakerExtendable { 74 | self.description.attributes += .centerX 75 | return self 76 | } 77 | 78 | public var centerY: ConstraintMakerExtendable { 79 | self.description.attributes += .centerY 80 | return self 81 | } 82 | 83 | @available(*, deprecated:3.0, message:"Use lastBaseline instead") 84 | public var baseline: ConstraintMakerExtendable { 85 | self.description.attributes += .lastBaseline 86 | return self 87 | } 88 | 89 | public var lastBaseline: ConstraintMakerExtendable { 90 | self.description.attributes += .lastBaseline 91 | return self 92 | } 93 | 94 | @available(iOS 8.0, OSX 10.11, *) 95 | public var firstBaseline: ConstraintMakerExtendable { 96 | self.description.attributes += .firstBaseline 97 | return self 98 | } 99 | 100 | @available(iOS 8.0, *) 101 | public var leftMargin: ConstraintMakerExtendable { 102 | self.description.attributes += .leftMargin 103 | return self 104 | } 105 | 106 | @available(iOS 8.0, *) 107 | public var rightMargin: ConstraintMakerExtendable { 108 | self.description.attributes += .rightMargin 109 | return self 110 | } 111 | 112 | @available(iOS 8.0, *) 113 | public var topMargin: ConstraintMakerExtendable { 114 | self.description.attributes += .topMargin 115 | return self 116 | } 117 | 118 | @available(iOS 8.0, *) 119 | public var bottomMargin: ConstraintMakerExtendable { 120 | self.description.attributes += .bottomMargin 121 | return self 122 | } 123 | 124 | @available(iOS 8.0, *) 125 | public var leadingMargin: ConstraintMakerExtendable { 126 | self.description.attributes += .leadingMargin 127 | return self 128 | } 129 | 130 | @available(iOS 8.0, *) 131 | public var trailingMargin: ConstraintMakerExtendable { 132 | self.description.attributes += .trailingMargin 133 | return self 134 | } 135 | 136 | @available(iOS 8.0, *) 137 | public var centerXWithinMargins: ConstraintMakerExtendable { 138 | self.description.attributes += .centerXWithinMargins 139 | return self 140 | } 141 | 142 | @available(iOS 8.0, *) 143 | public var centerYWithinMargins: ConstraintMakerExtendable { 144 | self.description.attributes += .centerYWithinMargins 145 | return self 146 | } 147 | 148 | public var edges: ConstraintMakerExtendable { 149 | self.description.attributes += .edges 150 | return self 151 | } 152 | public var size: ConstraintMakerExtendable { 153 | self.description.attributes += .size 154 | return self 155 | } 156 | 157 | @available(iOS 8.0, *) 158 | public var margins: ConstraintMakerExtendable { 159 | self.description.attributes += .margins 160 | return self 161 | } 162 | 163 | @available(iOS 8.0, *) 164 | public var centerWithinMargins: ConstraintMakerExtendable { 165 | self.description.attributes += .centerWithinMargins 166 | return self 167 | } 168 | 169 | } 170 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintConstantTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintConstantTarget { 32 | } 33 | 34 | extension CGPoint: ConstraintConstantTarget { 35 | } 36 | 37 | extension CGSize: ConstraintConstantTarget { 38 | } 39 | 40 | extension ConstraintInsets: ConstraintConstantTarget { 41 | } 42 | 43 | extension ConstraintConstantTarget { 44 | 45 | internal func constraintConstantTargetValueFor(layoutAttribute: LayoutAttribute) -> CGFloat { 46 | if let value = self as? CGFloat { 47 | return value 48 | } 49 | 50 | if let value = self as? Float { 51 | return CGFloat(value) 52 | } 53 | 54 | if let value = self as? Double { 55 | return CGFloat(value) 56 | } 57 | 58 | if let value = self as? Int { 59 | return CGFloat(value) 60 | } 61 | 62 | if let value = self as? UInt { 63 | return CGFloat(value) 64 | } 65 | 66 | if let value = self as? CGSize { 67 | if layoutAttribute == .width { 68 | return value.width 69 | } else if layoutAttribute == .height { 70 | return value.height 71 | } else { 72 | return 0.0 73 | } 74 | } 75 | 76 | if let value = self as? CGPoint { 77 | #if os(iOS) || os(tvOS) 78 | switch layoutAttribute { 79 | case .left, .right, .leading, .trailing, .centerX, .leftMargin, .rightMargin, .leadingMargin, .trailingMargin, .centerXWithinMargins: 80 | return value.x 81 | case .top, .bottom, .centerY, .topMargin, .bottomMargin, .centerYWithinMargins, .lastBaseline, .firstBaseline: 82 | return value.y 83 | case .width, .height, .notAnAttribute: 84 | return 0.0 85 | } 86 | #else 87 | switch layoutAttribute { 88 | case .left, .right, .leading, .trailing, .centerX: 89 | return value.x 90 | case .top, .bottom, .centerY, .lastBaseline, .firstBaseline: 91 | return value.y 92 | case .width, .height, .notAnAttribute: 93 | return 0.0 94 | } 95 | #endif 96 | } 97 | 98 | if let value = self as? ConstraintInsets { 99 | #if os(iOS) || os(tvOS) 100 | switch layoutAttribute { 101 | case .left, .leftMargin, .centerX, .centerXWithinMargins: 102 | return value.left 103 | case .top, .topMargin, .centerY, .centerYWithinMargins, .lastBaseline, .firstBaseline: 104 | return value.top 105 | case .right, .rightMargin: 106 | return -value.right 107 | case .bottom, .bottomMargin: 108 | return -value.bottom 109 | case .leading, .leadingMargin: 110 | return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? value.left : value.right 111 | case .trailing, .trailingMargin: 112 | return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? -value.right : -value.left 113 | case .width: 114 | return -(value.left + value.right) 115 | case .height: 116 | return -(value.top + value.bottom) 117 | case .notAnAttribute: 118 | return 0.0 119 | } 120 | #else 121 | switch layoutAttribute { 122 | case .left, .centerX: 123 | return value.left 124 | case .top, .centerY, .lastBaseline, .firstBaseline: 125 | return value.top 126 | case .right: 127 | return -value.right 128 | case .bottom: 129 | return -value.bottom 130 | case .leading: 131 | return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? value.left : value.right 132 | case .trailing: 133 | return (ConstraintConfig.interfaceLayoutDirection == .leftToRight) ? -value.right : -value.left 134 | case .width: 135 | return -(value.left + value.right) 136 | case .height: 137 | return -(value.top + value.bottom) 138 | case .notAnAttribute: 139 | return 0.0 140 | } 141 | #endif 142 | } 143 | 144 | return 0.0 145 | } 146 | 147 | } 148 | -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.sina.emoji/info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | id 6 | com.sina.emoji 7 | emojis 8 | 9 | 10 | chs 11 | [笑哈哈] 12 | png 13 | lxh_xiaohaha.png 14 | 15 | 16 | chs 17 | [好爱哦] 18 | png 19 | lxh_haoaio.png 20 | 21 | 22 | chs 23 | [噢耶] 24 | png 25 | lxh_oye.png 26 | 27 | 28 | chs 29 | [偷乐] 30 | png 31 | lxh_toule.png 32 | 33 | 34 | chs 35 | [泪流满面] 36 | png 37 | lxh_leiliumanmian.png 38 | 39 | 40 | chs 41 | [巨汗] 42 | png 43 | lxh_juhan.png 44 | 45 | 46 | chs 47 | [抠鼻屎] 48 | png 49 | lxh_koubishi.png 50 | 51 | 52 | chs 53 | [求关注] 54 | png 55 | lxh_qiuguanzhu.png 56 | 57 | 58 | chs 59 | [好喜欢] 60 | png 61 | lxh_haoxihuan.png 62 | 63 | 64 | chs 65 | [崩溃] 66 | png 67 | lxh_bengkui.png 68 | 69 | 70 | chs 71 | [好囧] 72 | png 73 | lxh_haojiong.png 74 | 75 | 76 | chs 77 | [震惊] 78 | png 79 | lxh_zhenjing.png 80 | 81 | 82 | chs 83 | [别烦我] 84 | png 85 | lxh_biefanwo.png 86 | 87 | 88 | chs 89 | [不好意思] 90 | png 91 | lxh_buhaoyisi.png 92 | 93 | 94 | chs 95 | [羞嗒嗒] 96 | png 97 | lxh_xiudada.png 98 | 99 | 100 | chs 101 | [得意地笑] 102 | png 103 | lxh_deyidexiao.png 104 | 105 | 106 | chs 107 | [纠结] 108 | png 109 | lxh_jiujie.png 110 | 111 | 112 | chs 113 | [给劲] 114 | png 115 | lxh_geijin.png 116 | 117 | 118 | chs 119 | [悲催] 120 | png 121 | lxh_beicui.png 122 | 123 | 124 | chs 125 | [甩甩手] 126 | png 127 | lxh_shuaishuaishou.png 128 | 129 | 130 | chs 131 | [好棒] 132 | png 133 | lxh_haobang.png 134 | 135 | 136 | chs 137 | [瞧瞧] 138 | png 139 | lxh_qiaoqiao.png 140 | 141 | 142 | chs 143 | [不想上班] 144 | png 145 | lxh_buxiangshangban.png 146 | 147 | 148 | chs 149 | [困死了] 150 | png 151 | lxh_kunsile.png 152 | 153 | 154 | chs 155 | [许愿] 156 | png 157 | lxh_xuyuan.png 158 | 159 | 160 | chs 161 | [丘比特] 162 | png 163 | lxh_qiubite.png 164 | 165 | 166 | chs 167 | [有鸭梨] 168 | png 169 | lxh_youyali.png 170 | 171 | 172 | chs 173 | [想一想] 174 | png 175 | lxh_xiangyixiang.png 176 | 177 | 178 | chs 179 | [躁狂症] 180 | png 181 | lxh_zaokuangzheng.png 182 | 183 | 184 | chs 185 | [转发] 186 | png 187 | lxh_zhuanfa.png 188 | 189 | 190 | chs 191 | [互相膜拜] 192 | png 193 | lxh_xianghumobai.png 194 | 195 | 196 | chs 197 | [雷锋] 198 | png 199 | lxh_leifeng.png 200 | 201 | 202 | chs 203 | [杰克逊] 204 | png 205 | lxh_jiekexun.png 206 | 207 | 208 | chs 209 | [玫瑰] 210 | png 211 | lxh_meigui.png 212 | 213 | 214 | chs 215 | [hold住] 216 | png 217 | lxh_holdzhu.png 218 | 219 | 220 | chs 221 | [群体围观] 222 | png 223 | lxh_quntiweiguan.png 224 | 225 | 226 | chs 227 | [推荐] 228 | png 229 | lxh_tuijian.png 230 | 231 | 232 | chs 233 | [赞啊] 234 | png 235 | lxh_zana.png 236 | 237 | 238 | chs 239 | [被电] 240 | png 241 | lxh_beidian.png 242 | 243 | 244 | chs 245 | [霹雳] 246 | png 247 | lxh_pili.png 248 | 249 | 250 | 251 | 252 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/Debugging.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | public extension LayoutConstraint { 31 | 32 | override public var description: String { 33 | var description = "<" 34 | 35 | description += descriptionForObject(self) 36 | 37 | if let firstItem = conditionalOptional(from: self.firstItem) { 38 | description += " \(descriptionForObject(firstItem))" 39 | } 40 | 41 | if self.firstAttribute != .notAnAttribute { 42 | description += ".\(descriptionForAttribute(self.firstAttribute))" 43 | } 44 | 45 | description += " \(descriptionForRelation(self.relation))" 46 | 47 | if let secondItem = self.secondItem { 48 | description += " \(descriptionForObject(secondItem))" 49 | } 50 | 51 | if self.secondAttribute != .notAnAttribute { 52 | description += ".\(descriptionForAttribute(self.secondAttribute))" 53 | } 54 | 55 | if self.multiplier != 1.0 { 56 | description += " * \(self.multiplier)" 57 | } 58 | 59 | if self.secondAttribute == .notAnAttribute { 60 | description += " \(self.constant)" 61 | } else { 62 | if self.constant > 0.0 { 63 | description += " + \(self.constant)" 64 | } else if self.constant < 0.0 { 65 | description += " - \(abs(self.constant))" 66 | } 67 | } 68 | 69 | if self.priority.rawValue != 1000.0 { 70 | description += " ^\(self.priority)" 71 | } 72 | 73 | description += ">" 74 | 75 | return description 76 | } 77 | 78 | } 79 | 80 | private func descriptionForRelation(_ relation: LayoutRelation) -> String { 81 | switch relation { 82 | case .equal: return "==" 83 | case .greaterThanOrEqual: return ">=" 84 | case .lessThanOrEqual: return "<=" 85 | } 86 | } 87 | 88 | private func descriptionForAttribute(_ attribute: LayoutAttribute) -> String { 89 | #if os(iOS) || os(tvOS) 90 | switch attribute { 91 | case .notAnAttribute: return "notAnAttribute" 92 | case .top: return "top" 93 | case .left: return "left" 94 | case .bottom: return "bottom" 95 | case .right: return "right" 96 | case .leading: return "leading" 97 | case .trailing: return "trailing" 98 | case .width: return "width" 99 | case .height: return "height" 100 | case .centerX: return "centerX" 101 | case .centerY: return "centerY" 102 | case .lastBaseline: return "lastBaseline" 103 | case .firstBaseline: return "firstBaseline" 104 | case .topMargin: return "topMargin" 105 | case .leftMargin: return "leftMargin" 106 | case .bottomMargin: return "bottomMargin" 107 | case .rightMargin: return "rightMargin" 108 | case .leadingMargin: return "leadingMargin" 109 | case .trailingMargin: return "trailingMargin" 110 | case .centerXWithinMargins: return "centerXWithinMargins" 111 | case .centerYWithinMargins: return "centerYWithinMargins" 112 | } 113 | #else 114 | switch attribute { 115 | case .notAnAttribute: return "notAnAttribute" 116 | case .top: return "top" 117 | case .left: return "left" 118 | case .bottom: return "bottom" 119 | case .right: return "right" 120 | case .leading: return "leading" 121 | case .trailing: return "trailing" 122 | case .width: return "width" 123 | case .height: return "height" 124 | case .centerX: return "centerX" 125 | case .centerY: return "centerY" 126 | case .lastBaseline: return "lastBaseline" 127 | case .firstBaseline: return "firstBaseline" 128 | } 129 | #endif 130 | } 131 | 132 | private func conditionalOptional(from object: Optional) -> Optional { 133 | return object 134 | } 135 | 136 | private func conditionalOptional(from object: T) -> Optional { 137 | return Optional.some(object) 138 | } 139 | 140 | private func descriptionForObject(_ object: AnyObject) -> String { 141 | let pointerDescription = String(format: "%p", UInt(bitPattern: ObjectIdentifier(object))) 142 | var desc = "" 143 | 144 | desc += type(of: object).description() 145 | 146 | if let object = object as? ConstraintView { 147 | desc += ":\(object.snp.label() ?? pointerDescription)" 148 | } else if let object = object as? LayoutConstraint { 149 | desc += ":\(object.label ?? pointerDescription)" 150 | } else { 151 | desc += ":\(pointerDescription)" 152 | } 153 | 154 | if let object = object as? LayoutConstraint, let file = object.constraint?.sourceLocation.0, let line = object.constraint?.sourceLocation.1 { 155 | desc += "@\((file as NSString).lastPathComponent)#\(line)" 156 | } 157 | 158 | desc += "" 159 | return desc 160 | } 161 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-EmojiKeyboard/Pods-EmojiKeyboard-resources.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${UNLOCALIZED_RESOURCES_FOLDER_PATH+x} ]; then 7 | # If UNLOCALIZED_RESOURCES_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # resources to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 13 | 14 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt 15 | > "$RESOURCES_TO_COPY" 16 | 17 | XCASSET_FILES=() 18 | 19 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 20 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 21 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 22 | 23 | case "${TARGETED_DEVICE_FAMILY:-}" in 24 | 1,2) 25 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" 26 | ;; 27 | 1) 28 | TARGET_DEVICE_ARGS="--target-device iphone" 29 | ;; 30 | 2) 31 | TARGET_DEVICE_ARGS="--target-device ipad" 32 | ;; 33 | 3) 34 | TARGET_DEVICE_ARGS="--target-device tv" 35 | ;; 36 | 4) 37 | TARGET_DEVICE_ARGS="--target-device watch" 38 | ;; 39 | *) 40 | TARGET_DEVICE_ARGS="--target-device mac" 41 | ;; 42 | esac 43 | 44 | install_resource() 45 | { 46 | if [[ "$1" = /* ]] ; then 47 | RESOURCE_PATH="$1" 48 | else 49 | RESOURCE_PATH="${PODS_ROOT}/$1" 50 | fi 51 | if [[ ! -e "$RESOURCE_PATH" ]] ; then 52 | cat << EOM 53 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script. 54 | EOM 55 | exit 1 56 | fi 57 | case $RESOURCE_PATH in 58 | *.storyboard) 59 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 60 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 61 | ;; 62 | *.xib) 63 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}" || true 64 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS} 65 | ;; 66 | *.framework) 67 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 68 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 69 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" || true 70 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 71 | ;; 72 | *.xcdatamodel) 73 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\"" || true 74 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom" 75 | ;; 76 | *.xcdatamodeld) 77 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\"" || true 78 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd" 79 | ;; 80 | *.xcmappingmodel) 81 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\"" || true 82 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm" 83 | ;; 84 | *.xcassets) 85 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH" 86 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") 87 | ;; 88 | *) 89 | echo "$RESOURCE_PATH" || true 90 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY" 91 | ;; 92 | esac 93 | } 94 | 95 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 96 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 97 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then 98 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 99 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 100 | fi 101 | rm -f "$RESOURCES_TO_COPY" 102 | 103 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "${XCASSET_FILES:-}" ] 104 | then 105 | # Find all other xcassets (this unfortunately includes those of path pods and other targets). 106 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) 107 | while read line; do 108 | if [[ $line != "${PODS_ROOT}*" ]]; then 109 | XCASSET_FILES+=("$line") 110 | fi 111 | done <<<"$OTHER_XCASSETS" 112 | 113 | if [ -z ${ASSETCATALOG_COMPILER_APPICON_NAME+x} ]; then 114 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" 115 | else 116 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${TARGET_BUILD_DIR}/assetcatalog_generated_info.plist" 117 | fi 118 | fi 119 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintDSL.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public protocol ConstraintDSL { 32 | 33 | var target: AnyObject? { get } 34 | 35 | func setLabel(_ value: String?) 36 | func label() -> String? 37 | 38 | } 39 | extension ConstraintDSL { 40 | 41 | public func setLabel(_ value: String?) { 42 | objc_setAssociatedObject(self.target as Any, &labelKey, value, .OBJC_ASSOCIATION_COPY_NONATOMIC) 43 | } 44 | public func label() -> String? { 45 | return objc_getAssociatedObject(self.target as Any, &labelKey) as? String 46 | } 47 | 48 | } 49 | private var labelKey: UInt8 = 0 50 | 51 | 52 | public protocol ConstraintBasicAttributesDSL : ConstraintDSL { 53 | } 54 | extension ConstraintBasicAttributesDSL { 55 | 56 | // MARK: Basics 57 | 58 | public var left: ConstraintItem { 59 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.left) 60 | } 61 | 62 | public var top: ConstraintItem { 63 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.top) 64 | } 65 | 66 | public var right: ConstraintItem { 67 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.right) 68 | } 69 | 70 | public var bottom: ConstraintItem { 71 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottom) 72 | } 73 | 74 | public var leading: ConstraintItem { 75 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leading) 76 | } 77 | 78 | public var trailing: ConstraintItem { 79 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.trailing) 80 | } 81 | 82 | public var width: ConstraintItem { 83 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.width) 84 | } 85 | 86 | public var height: ConstraintItem { 87 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.height) 88 | } 89 | 90 | public var centerX: ConstraintItem { 91 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerX) 92 | } 93 | 94 | public var centerY: ConstraintItem { 95 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerY) 96 | } 97 | 98 | public var edges: ConstraintItem { 99 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.edges) 100 | } 101 | 102 | public var size: ConstraintItem { 103 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.size) 104 | } 105 | 106 | public var center: ConstraintItem { 107 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.center) 108 | } 109 | 110 | } 111 | 112 | public protocol ConstraintAttributesDSL : ConstraintBasicAttributesDSL { 113 | } 114 | extension ConstraintAttributesDSL { 115 | 116 | // MARK: Baselines 117 | 118 | @available(*, deprecated:3.0, message:"Use .lastBaseline instead") 119 | public var baseline: ConstraintItem { 120 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.lastBaseline) 121 | } 122 | 123 | @available(iOS 8.0, OSX 10.11, *) 124 | public var lastBaseline: ConstraintItem { 125 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.lastBaseline) 126 | } 127 | 128 | @available(iOS 8.0, OSX 10.11, *) 129 | public var firstBaseline: ConstraintItem { 130 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.firstBaseline) 131 | } 132 | 133 | // MARK: Margins 134 | 135 | @available(iOS 8.0, *) 136 | public var leftMargin: ConstraintItem { 137 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leftMargin) 138 | } 139 | 140 | @available(iOS 8.0, *) 141 | public var topMargin: ConstraintItem { 142 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.topMargin) 143 | } 144 | 145 | @available(iOS 8.0, *) 146 | public var rightMargin: ConstraintItem { 147 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.rightMargin) 148 | } 149 | 150 | @available(iOS 8.0, *) 151 | public var bottomMargin: ConstraintItem { 152 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.bottomMargin) 153 | } 154 | 155 | @available(iOS 8.0, *) 156 | public var leadingMargin: ConstraintItem { 157 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.leadingMargin) 158 | } 159 | 160 | @available(iOS 8.0, *) 161 | public var trailingMargin: ConstraintItem { 162 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.trailingMargin) 163 | } 164 | 165 | @available(iOS 8.0, *) 166 | public var centerXWithinMargins: ConstraintItem { 167 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerXWithinMargins) 168 | } 169 | 170 | @available(iOS 8.0, *) 171 | public var centerYWithinMargins: ConstraintItem { 172 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerYWithinMargins) 173 | } 174 | 175 | @available(iOS 8.0, *) 176 | public var margins: ConstraintItem { 177 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.margins) 178 | } 179 | 180 | @available(iOS 8.0, *) 181 | public var centerWithinMargins: ConstraintItem { 182 | return ConstraintItem(target: self.target, attributes: ConstraintAttributes.centerWithinMargins) 183 | } 184 | 185 | } 186 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintView+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | 31 | public extension ConstraintView { 32 | 33 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 34 | public var snp_left: ConstraintItem { return self.snp.left } 35 | 36 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 37 | public var snp_top: ConstraintItem { return self.snp.top } 38 | 39 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 40 | public var snp_right: ConstraintItem { return self.snp.right } 41 | 42 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 43 | public var snp_bottom: ConstraintItem { return self.snp.bottom } 44 | 45 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 46 | public var snp_leading: ConstraintItem { return self.snp.leading } 47 | 48 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 49 | public var snp_trailing: ConstraintItem { return self.snp.trailing } 50 | 51 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 52 | public var snp_width: ConstraintItem { return self.snp.width } 53 | 54 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 55 | public var snp_height: ConstraintItem { return self.snp.height } 56 | 57 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 58 | public var snp_centerX: ConstraintItem { return self.snp.centerX } 59 | 60 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 61 | public var snp_centerY: ConstraintItem { return self.snp.centerY } 62 | 63 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 64 | public var snp_baseline: ConstraintItem { return self.snp.baseline } 65 | 66 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 67 | @available(iOS 8.0, OSX 10.11, *) 68 | public var snp_lastBaseline: ConstraintItem { return self.snp.lastBaseline } 69 | 70 | @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") 71 | @available(iOS 8.0, OSX 10.11, *) 72 | public var snp_firstBaseline: ConstraintItem { return self.snp.firstBaseline } 73 | 74 | @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") 75 | @available(iOS 8.0, *) 76 | public var snp_leftMargin: ConstraintItem { return self.snp.leftMargin } 77 | 78 | @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") 79 | @available(iOS 8.0, *) 80 | public var snp_topMargin: ConstraintItem { return self.snp.topMargin } 81 | 82 | @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") 83 | @available(iOS 8.0, *) 84 | public var snp_rightMargin: ConstraintItem { return self.snp.rightMargin } 85 | 86 | @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") 87 | @available(iOS 8.0, *) 88 | public var snp_bottomMargin: ConstraintItem { return self.snp.bottomMargin } 89 | 90 | @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") 91 | @available(iOS 8.0, *) 92 | public var snp_leadingMargin: ConstraintItem { return self.snp.leadingMargin } 93 | 94 | @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") 95 | @available(iOS 8.0, *) 96 | public var snp_trailingMargin: ConstraintItem { return self.snp.trailingMargin } 97 | 98 | @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") 99 | @available(iOS 8.0, *) 100 | public var snp_centerXWithinMargins: ConstraintItem { return self.snp.centerXWithinMargins } 101 | 102 | @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") 103 | @available(iOS 8.0, *) 104 | public var snp_centerYWithinMargins: ConstraintItem { return self.snp.centerYWithinMargins } 105 | 106 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 107 | public var snp_edges: ConstraintItem { return self.snp.edges } 108 | 109 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 110 | public var snp_size: ConstraintItem { return self.snp.size } 111 | 112 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 113 | public var snp_center: ConstraintItem { return self.snp.center } 114 | 115 | @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") 116 | @available(iOS 8.0, *) 117 | public var snp_margins: ConstraintItem { return self.snp.margins } 118 | 119 | @available(iOS, deprecated:3.0, message:"Use newer snp.* syntax.") 120 | @available(iOS 8.0, *) 121 | public var snp_centerWithinMargins: ConstraintItem { return self.snp.centerWithinMargins } 122 | 123 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 124 | public func snp_prepareConstraints(_ closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { 125 | return self.snp.prepareConstraints(closure) 126 | } 127 | 128 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 129 | public func snp_makeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 130 | self.snp.makeConstraints(closure) 131 | } 132 | 133 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 134 | public func snp_remakeConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 135 | self.snp.remakeConstraints(closure) 136 | } 137 | 138 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 139 | public func snp_updateConstraints(_ closure: (_ make: ConstraintMaker) -> Void) { 140 | self.snp.updateConstraints(closure) 141 | } 142 | 143 | @available(*, deprecated:3.0, message:"Use newer snp.* syntax.") 144 | public func snp_removeConstraints() { 145 | self.snp.removeConstraints() 146 | } 147 | 148 | public var snp: ConstraintViewDSL { 149 | return ConstraintViewDSL(view: self) 150 | } 151 | 152 | } 153 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-EmojiKeyboard/Pods-EmojiKeyboard-frameworks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | set -u 4 | set -o pipefail 5 | 6 | if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then 7 | # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy 8 | # frameworks to, so exit 0 (signalling the script phase was successful). 9 | exit 0 10 | fi 11 | 12 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 13 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 14 | 15 | COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" 16 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" 17 | 18 | # Used as a return value for each invocation of `strip_invalid_archs` function. 19 | STRIP_BINARY_RETVAL=0 20 | 21 | # This protects against multiple targets copying the same framework dependency at the same time. The solution 22 | # was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html 23 | RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") 24 | 25 | # Copies and strips a vendored framework 26 | install_framework() 27 | { 28 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then 29 | local source="${BUILT_PRODUCTS_DIR}/$1" 30 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then 31 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" 32 | elif [ -r "$1" ]; then 33 | local source="$1" 34 | fi 35 | 36 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" 37 | 38 | if [ -L "${source}" ]; then 39 | echo "Symlinked..." 40 | source="$(readlink "${source}")" 41 | fi 42 | 43 | # Use filter instead of exclude so missing patterns don't throw errors. 44 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" 45 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" 46 | 47 | local basename 48 | basename="$(basename -s .framework "$1")" 49 | binary="${destination}/${basename}.framework/${basename}" 50 | if ! [ -r "$binary" ]; then 51 | binary="${destination}/${basename}" 52 | fi 53 | 54 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 55 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then 56 | strip_invalid_archs "$binary" 57 | fi 58 | 59 | # Resign the code if required by the build settings to avoid unstable apps 60 | code_sign_if_enabled "${destination}/$(basename "$1")" 61 | 62 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. 63 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then 64 | local swift_runtime_libs 65 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) 66 | for lib in $swift_runtime_libs; do 67 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" 68 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" 69 | code_sign_if_enabled "${destination}/${lib}" 70 | done 71 | fi 72 | } 73 | 74 | # Copies and strips a vendored dSYM 75 | install_dsym() { 76 | local source="$1" 77 | if [ -r "$source" ]; then 78 | # Copy the dSYM into a the targets temp dir. 79 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" 80 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" 81 | 82 | local basename 83 | basename="$(basename -s .framework.dSYM "$source")" 84 | binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" 85 | 86 | # Strip invalid architectures so "fat" simulator / device frameworks work on device 87 | if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then 88 | strip_invalid_archs "$binary" 89 | fi 90 | 91 | if [[ $STRIP_BINARY_RETVAL == 1 ]]; then 92 | # Move the stripped file into its final destination. 93 | echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" 94 | rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" 95 | else 96 | # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. 97 | touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" 98 | fi 99 | fi 100 | } 101 | 102 | # Signs a framework with the provided identity 103 | code_sign_if_enabled() { 104 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then 105 | # Use the current code_sign_identitiy 106 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" 107 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" 108 | 109 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 110 | code_sign_cmd="$code_sign_cmd &" 111 | fi 112 | echo "$code_sign_cmd" 113 | eval "$code_sign_cmd" 114 | fi 115 | } 116 | 117 | # Strip invalid architectures 118 | strip_invalid_archs() { 119 | binary="$1" 120 | # Get architectures for current target binary 121 | binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" 122 | # Intersect them with the architectures we are building for 123 | intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" 124 | # If there are no archs supported by this binary then warn the user 125 | if [[ -z "$intersected_archs" ]]; then 126 | echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." 127 | STRIP_BINARY_RETVAL=0 128 | return 129 | fi 130 | stripped="" 131 | for arch in $binary_archs; do 132 | if ! [[ "${ARCHS}" == *"$arch"* ]]; then 133 | # Strip non-valid architectures in-place 134 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1 135 | stripped="$stripped $arch" 136 | fi 137 | done 138 | if [[ "$stripped" ]]; then 139 | echo "Stripped $binary of architectures:$stripped" 140 | fi 141 | STRIP_BINARY_RETVAL=1 142 | } 143 | 144 | 145 | if [[ "$CONFIGURATION" == "Debug" ]]; then 146 | install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework" 147 | fi 148 | if [[ "$CONFIGURATION" == "Release" ]]; then 149 | install_framework "${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework" 150 | fi 151 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then 152 | wait 153 | fi 154 | -------------------------------------------------------------------------------- /EmojiKeyboard/EmojiKeyboard/EmojiKeyBoard.bundle/com.apple.emoji/info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | id 6 | com.apple.emoji 7 | emojis 8 | 9 | 10 | code 11 | 0x1f603 12 | 13 | 14 | 15 | code 16 | 0x1f60d 17 | 18 | 19 | 20 | code 21 | 0x1f612 22 | 23 | 24 | 25 | code 26 | 0x1f633 27 | 28 | 29 | 30 | code 31 | 0x1f601 32 | 33 | 34 | 35 | code 36 | 0x1f618 37 | 38 | 39 | 40 | code 41 | 0x1f609 42 | 43 | 44 | 45 | code 46 | 0x1f620 47 | 48 | 49 | 50 | code 51 | 0x1f61e 52 | 53 | 54 | 55 | code 56 | 0x1f625 57 | 58 | 59 | 60 | code 61 | 0x1f62d 62 | 63 | 64 | 65 | code 66 | 0x1f61d 67 | 68 | 69 | 70 | code 71 | 0x1f621 72 | 73 | 74 | 75 | code 76 | 0x1f623 77 | 78 | 79 | 80 | code 81 | 0x1f614 82 | 83 | 84 | 85 | code 86 | 0x1f604 87 | 88 | 89 | 90 | code 91 | 0x1f637 92 | 93 | 94 | 95 | code 96 | 0x1f61a 97 | 98 | 99 | 100 | code 101 | 0x1f613 102 | 103 | 104 | 105 | code 106 | 0x1f602 107 | 108 | 109 | 110 | code 111 | 0x1f60a 112 | 113 | 114 | 115 | code 116 | 0x1f622 117 | 118 | 119 | 120 | code 121 | 0x1f61c 122 | 123 | 124 | 125 | code 126 | 0x1f628 127 | 128 | 129 | 130 | code 131 | 0x1f630 132 | 133 | 134 | 135 | code 136 | 0x1f632 137 | 138 | 139 | 140 | code 141 | 0x1f60f 142 | 143 | 144 | 145 | code 146 | 0x1f631 147 | 148 | 149 | 150 | code 151 | 0x1f62a 152 | 153 | 154 | 155 | code 156 | 0x1f616 157 | 158 | 159 | 160 | code 161 | 0x1f60c 162 | 163 | 164 | 165 | code 166 | 0x1f47f 167 | 168 | 169 | 170 | code 171 | 0x1f47b 172 | 173 | 174 | 175 | code 176 | 0x1f385 177 | 178 | 179 | 180 | code 181 | 0x1f467 182 | 183 | 184 | 185 | code 186 | 0x1f466 187 | 188 | 189 | 190 | code 191 | 0x1f469 192 | 193 | 194 | 195 | code 196 | 0x1f468 197 | 198 | 199 | 200 | code 201 | 0x1f436 202 | 203 | 204 | 205 | code 206 | 0x1f431 207 | 208 | 209 | 210 | code 211 | 0x1f44d 212 | 213 | 214 | 215 | code 216 | 0x1f44e 217 | 218 | 219 | 220 | code 221 | 0x1f44a 222 | 223 | 224 | 225 | code 226 | 0x270a 227 | 228 | 229 | 230 | code 231 | 0x270c 232 | 233 | 234 | 235 | code 236 | 0x1f4aa 237 | 238 | 239 | 240 | code 241 | 0x1f44f 242 | 243 | 244 | 245 | code 246 | 0x1f448 247 | 248 | 249 | 250 | code 251 | 0x1f446 252 | 253 | 254 | 255 | code 256 | 0x1f449 257 | 258 | 259 | 260 | code 261 | 0x1f447 262 | 263 | 264 | 265 | code 266 | 0x1f44c 267 | 268 | 269 | 270 | code 271 | 0x2764 272 | 273 | 274 | 275 | code 276 | 0x1f494 277 | 278 | 279 | 280 | code 281 | 0x1f64f 282 | 283 | 284 | 285 | code 286 | 0x2600 287 | 288 | 289 | 290 | code 291 | 0x1f319 292 | 293 | 294 | 295 | code 296 | 0x1f31f 297 | 298 | 299 | 300 | code 301 | 0x26a1 302 | 303 | 304 | 305 | code 306 | 0x2601 307 | 308 | 309 | 310 | code 311 | 0x2614 312 | 313 | 314 | 315 | code 316 | 0x1f341 317 | 318 | 319 | 320 | code 321 | 0x1f33b 322 | 323 | 324 | 325 | code 326 | 0x1f343 327 | 328 | 329 | 330 | code 331 | 0x1f457 332 | 333 | 334 | 335 | code 336 | 0x1f380 337 | 338 | 339 | 340 | code 341 | 0x1f444 342 | 343 | 344 | 345 | code 346 | 0x1f339 347 | 348 | 349 | 350 | code 351 | 0x2615 352 | 353 | 354 | 355 | code 356 | 0x1f382 357 | 358 | 359 | 360 | code 361 | 0x1f559 362 | 363 | 364 | 365 | code 366 | 0x1f37a 367 | 368 | 369 | 370 | code 371 | 0x1f50d 372 | 373 | 374 | 375 | code 376 | 0x1f4f1 377 | 378 | 379 | 380 | code 381 | 0x1f3e0 382 | 383 | 384 | 385 | code 386 | 0x1f697 387 | 388 | 389 | 390 | code 391 | 0x1f381 392 | 393 | 394 | 395 | code 396 | 0x26bd 397 | 398 | 399 | 400 | code 401 | 0x1f4a3 402 | 403 | 404 | 405 | code 406 | 0x1f48e 407 | 408 | 409 | 410 | 411 | 412 | -------------------------------------------------------------------------------- /Pods/SnapKit/Source/ConstraintMaker.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SnapKit 3 | // 4 | // Copyright (c) 2011-Present SnapKit Team - https://github.com/SnapKit 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | 24 | #if os(iOS) || os(tvOS) 25 | import UIKit 26 | #else 27 | import AppKit 28 | #endif 29 | 30 | public class ConstraintMaker { 31 | 32 | public var left: ConstraintMakerExtendable { 33 | return self.makeExtendableWithAttributes(.left) 34 | } 35 | 36 | public var top: ConstraintMakerExtendable { 37 | return self.makeExtendableWithAttributes(.top) 38 | } 39 | 40 | public var bottom: ConstraintMakerExtendable { 41 | return self.makeExtendableWithAttributes(.bottom) 42 | } 43 | 44 | public var right: ConstraintMakerExtendable { 45 | return self.makeExtendableWithAttributes(.right) 46 | } 47 | 48 | public var leading: ConstraintMakerExtendable { 49 | return self.makeExtendableWithAttributes(.leading) 50 | } 51 | 52 | public var trailing: ConstraintMakerExtendable { 53 | return self.makeExtendableWithAttributes(.trailing) 54 | } 55 | 56 | public var width: ConstraintMakerExtendable { 57 | return self.makeExtendableWithAttributes(.width) 58 | } 59 | 60 | public var height: ConstraintMakerExtendable { 61 | return self.makeExtendableWithAttributes(.height) 62 | } 63 | 64 | public var centerX: ConstraintMakerExtendable { 65 | return self.makeExtendableWithAttributes(.centerX) 66 | } 67 | 68 | public var centerY: ConstraintMakerExtendable { 69 | return self.makeExtendableWithAttributes(.centerY) 70 | } 71 | 72 | @available(*, deprecated:3.0, message:"Use lastBaseline instead") 73 | public var baseline: ConstraintMakerExtendable { 74 | return self.makeExtendableWithAttributes(.lastBaseline) 75 | } 76 | 77 | public var lastBaseline: ConstraintMakerExtendable { 78 | return self.makeExtendableWithAttributes(.lastBaseline) 79 | } 80 | 81 | @available(iOS 8.0, OSX 10.11, *) 82 | public var firstBaseline: ConstraintMakerExtendable { 83 | return self.makeExtendableWithAttributes(.firstBaseline) 84 | } 85 | 86 | @available(iOS 8.0, *) 87 | public var leftMargin: ConstraintMakerExtendable { 88 | return self.makeExtendableWithAttributes(.leftMargin) 89 | } 90 | 91 | @available(iOS 8.0, *) 92 | public var rightMargin: ConstraintMakerExtendable { 93 | return self.makeExtendableWithAttributes(.rightMargin) 94 | } 95 | 96 | @available(iOS 8.0, *) 97 | public var topMargin: ConstraintMakerExtendable { 98 | return self.makeExtendableWithAttributes(.topMargin) 99 | } 100 | 101 | @available(iOS 8.0, *) 102 | public var bottomMargin: ConstraintMakerExtendable { 103 | return self.makeExtendableWithAttributes(.bottomMargin) 104 | } 105 | 106 | @available(iOS 8.0, *) 107 | public var leadingMargin: ConstraintMakerExtendable { 108 | return self.makeExtendableWithAttributes(.leadingMargin) 109 | } 110 | 111 | @available(iOS 8.0, *) 112 | public var trailingMargin: ConstraintMakerExtendable { 113 | return self.makeExtendableWithAttributes(.trailingMargin) 114 | } 115 | 116 | @available(iOS 8.0, *) 117 | public var centerXWithinMargins: ConstraintMakerExtendable { 118 | return self.makeExtendableWithAttributes(.centerXWithinMargins) 119 | } 120 | 121 | @available(iOS 8.0, *) 122 | public var centerYWithinMargins: ConstraintMakerExtendable { 123 | return self.makeExtendableWithAttributes(.centerYWithinMargins) 124 | } 125 | 126 | public var edges: ConstraintMakerExtendable { 127 | return self.makeExtendableWithAttributes(.edges) 128 | } 129 | public var size: ConstraintMakerExtendable { 130 | return self.makeExtendableWithAttributes(.size) 131 | } 132 | public var center: ConstraintMakerExtendable { 133 | return self.makeExtendableWithAttributes(.center) 134 | } 135 | 136 | @available(iOS 8.0, *) 137 | public var margins: ConstraintMakerExtendable { 138 | return self.makeExtendableWithAttributes(.margins) 139 | } 140 | 141 | @available(iOS 8.0, *) 142 | public var centerWithinMargins: ConstraintMakerExtendable { 143 | return self.makeExtendableWithAttributes(.centerWithinMargins) 144 | } 145 | 146 | private let item: LayoutConstraintItem 147 | private var descriptions = [ConstraintDescription]() 148 | 149 | internal init(item: LayoutConstraintItem) { 150 | self.item = item 151 | self.item.prepare() 152 | } 153 | 154 | internal func makeExtendableWithAttributes(_ attributes: ConstraintAttributes) -> ConstraintMakerExtendable { 155 | let description = ConstraintDescription(item: self.item, attributes: attributes) 156 | self.descriptions.append(description) 157 | return ConstraintMakerExtendable(description) 158 | } 159 | 160 | internal static func prepareConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) -> [Constraint] { 161 | let maker = ConstraintMaker(item: item) 162 | closure(maker) 163 | var constraints: [Constraint] = [] 164 | for description in maker.descriptions { 165 | guard let constraint = description.constraint else { 166 | continue 167 | } 168 | constraints.append(constraint) 169 | } 170 | return constraints 171 | } 172 | 173 | internal static func makeConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) { 174 | let constraints = prepareConstraints(item: item, closure: closure) 175 | for constraint in constraints { 176 | constraint.activateIfNeeded(updatingExisting: false) 177 | } 178 | } 179 | 180 | internal static func remakeConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) { 181 | self.removeConstraints(item: item) 182 | self.makeConstraints(item: item, closure: closure) 183 | } 184 | 185 | internal static func updateConstraints(item: LayoutConstraintItem, closure: (_ make: ConstraintMaker) -> Void) { 186 | guard item.constraints.count > 0 else { 187 | self.makeConstraints(item: item, closure: closure) 188 | return 189 | } 190 | 191 | let constraints = prepareConstraints(item: item, closure: closure) 192 | for constraint in constraints { 193 | constraint.activateIfNeeded(updatingExisting: true) 194 | } 195 | } 196 | 197 | internal static func removeConstraints(item: LayoutConstraintItem) { 198 | let constraints = item.constraints 199 | for constraint in constraints { 200 | constraint.deactivateIfNeeded() 201 | } 202 | } 203 | 204 | } 205 | --------------------------------------------------------------------------------