表情

.在UIKit中的UILabel默认是可以展示emoji表情的,只是对于表情的编码方式有要求,微信中的表情信息的样式是这样的

    <span class="emoji emoji1f380"></span>
    这里是信息的文字内容<span class="emoji emoji3120e3"></span>

其中的  1f380   3120e3  就是两个表情,但这是16进制的编码方式,在label中是不会显示表情的,我们就需要转换编码方式其实就是unicode编码。

2.转换编码的之前需要把要转换的文本拿出来,下面的代码就是把上面的字符串传入。

    - (NSString *)filterHTML:(NSString *)html
    {
        NSScanner * scanner = [NSScanner scannerWithString:html];
        NSString * text = nil;
        while([scanner isAtEnd] == NO)
        {
            [scanner scanUpToString:@"<" intoString:nil];
            [scanner scanUpToString:@">" intoString:&text];
            if ([html rangeOfString:@"<span"].location != NSNotFound)
            {
                //将文本中的表示emoji表情的字符拿出来
                NSString * str = [html subStringFrom:@"emoji emoji" to:@"\">"];
                //转换编码方式为emoji的编码
                NSString * str1 = [NSString emojiWithStringCode:str];
                //将带有标签的文本替换成emoji的编码
                html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"<span class=\"emoji emoji%@\"></span>",str] withString:str1];
            }
        }
        return html;
    }


3.其中转码为emoji编码的方法,是NSString的类别,下面是我从网上找到的代码

h文件

    #import <Foundation/Foundation.h>
     
    @interface NSString (Emoji)
    /**
     *  将十六进制的编码转为emoji字符
     */
    + (NSString *)emojiWithIntCode:(long)intCode;
     
    /**
     *  将十六进制的编码转为emoji字符
     */
    + (NSString *)emojiWithStringCode:(NSString *)stringCode;
    - (NSString *)emoji;
     
    /**
     *  是否为emoji字符
     */
    - (BOOL)isEmoji;
    @end


m文件

    #import "NSString+Emoji.h"
    #define EmojiCodeToSymbol(c) ((((0x808080F0 | (c & 0x3F000) >> 4) | (c & 0xFC0) << 10) | (c & 0x1C0000) << 18) | (c & 0x3F) << 24)
     
    @implementation NSString (Emoji)
     
    + (NSString *)emojiWithIntCode:(long)intCode {
        NSString * s = [NSString stringWithFormat:@"%ld",intCode];
        int symbol = EmojiCodeToSymbol([s intValue]);
        NSString *string = [[NSString alloc] initWithBytes:&symbol length:sizeof(symbol) encoding:NSUTF8StringEncoding];
        if (string == nil) { // 新版Emoji
            string = [NSString stringWithFormat:@"%C", (unichar)intCode];
        }
        return string;
    }
     
    - (NSString *)emoji
    {
        return [NSString emojiWithStringCode:self];
    }
     
    + (NSString *)emojiWithStringCode:(NSString *)stringCode
    {
        char *charCode = (char *)stringCode.UTF8String;
        long intCode = strtol(charCode, NULL, 16);
        return [self emojiWithIntCode:intCode];
    }
     
    // 判断是否是 emoji表情
    - (BOOL)isEmoji
    {
        BOOL returnValue = NO;
        
        const unichar hs = [self characterAtIndex:0];
        // surrogate pair
        if (0xd800 <= hs && hs <= 0xdbff) {
            if (self.length > 1) {
                const unichar ls = [self characterAtIndex:1];
                const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
                if (0x1d000 <= uc && uc <= 0x1f77f) {
                    returnValue = YES;
                }
            }
        } else if (self.length > 1) {
            const unichar ls = [self characterAtIndex:1];
            if (ls == 0x20e3) {
                returnValue = YES;
            }
        } else {
            // non surrogate
            if (0x2100 <= hs && hs <= 0x27ff) {
                returnValue = YES;
            } else if (0x2B05 <= hs && hs <= 0x2b07) {
                returnValue = YES;
            } else if (0x2934 <= hs && hs <= 0x2935) {
                returnValue = YES;
            } else if (0x3297 <= hs && hs <= 0x3299) {
                returnValue = YES;
            } else if (hs == 0xa9 || hs == 0xae || hs == 0x303d || hs == 0x3030 || hs == 0x2b55 || hs == 0x2b1c || hs == 0x2b1b || hs == 0x2b50) {
                returnValue = YES;
            }
        }
        
        return returnValue;
    }
    @end
 

🇮 0x1f1ee
🇹 0x1f1f9
📩 0x1f4e9
🎉 0x1f389
👉 0x1f449
💩 0x1f4a9
😉 0x1f609
💙 0x1f499
👩 0x1f469
🌹 0x1f339
💉 0x1f489
🐙 0x1f419
🔑 0x1f511
😱 0x1f631
👱 0x1f471
🍉 0x1f349
🍙 0x1f359
🐹 0x1f439
🎩 0x1f3a9
👙 0x1f459
🌙 0x1f319
🕙 0x1f559
💹 0x1f4b9
🚉 0x1f689
🚹 0x1f6b9
㊙ 0x3299
🚙 0x1f699
♉ 0x2649
😊 0x1f60a
🔊 0x1f50a
🌵 0x1f335
🐵 0x1f435
♥ 0x2665
🍅 0x1f345
👕 0x1f455
☕ 0x2615
🍵 0x1f375
🈵 0x1f235
🌅 0x1f305
🇯 0x1f1ef
🇵 0x1f1f5
🚥 0x1f6a5
🆕 0x1f195
🐚 0x1f41a
🍚 0x1f35a
🚕 0x1f695
⬅ 0x2b05
🕕 0x1f555
⛵ 0x26f5
🚅 0x1f685
🏥 0x1f3e5
⭕ 0x2b55
🙅 0x1f645
😥 0x1f625
🎥 0x1f3a5
💅 0x1f485
❕ 0x2755
🎵 0x1f3b5
🔥 0x1f525
❔ 0x2754
🍞 0x1f35e
🐎 0x1f40e
🐮 0x1f42e
⚾ 0x26be
🎾 0x1f3be
👾 0x1f47e
💎 0x1f48e
🌾 0x1f33e
📮 0x1f4ee
🍎 0x1f34e
☎ 0x260e
😞 0x1f61e
🎎 0x1f38e
👎 0x1f44e
🇸 0x1f1f8
👮 0x1f46e
🅾 0x1f17e
♎ 0x264e
🆎 0x1f18e
🔞 0x1f51e
🚾 0x1f6be
® 0xae
⛎ 0x26ce
🈹 0x1f239
⏩ 0x23e9
© 0xa9
↙ 0x2199
🆙 0x1f199
🏩 0x1f3e9
🎄 0x1f384
🔔 0x1f514
🎂 0x1f382
🌂 0x1f302
🍲 0x1f372
👢 0x1f462
👒 0x1f452
🍢 0x1f362
🍂 0x1f342
🐒 0x1f412
🎢 0x1f3a2
🚲 0x1f6b2
🚒 0x1f692
🚢 0x1f6a2
🈂 0x1f202
⛲ 0x26f2
6 0x36
™ 0x2122
🏢 0x1f3e2
🔲 0x1f532
🆒 0x1f192
💒 0x1f492
♒ 0x2652
🕒 0x1f552
👲 0x1f472
💢 0x1f4a2
🎒 0x1f392
👂 0x1f442
💂 0x1f482
😲 0x1f632
😂 0x1f602
🐺 0x1f43a
🔒 0x1f512
✂ 0x2702
📲 0x1f4f2
😒 0x1f612
📢 0x1f4e2
😢 0x1f622
4 0x34
⃣ 0x20e3
♣ 0x2663
🍣 0x1f363
5 0x35
⃣ 0x20e3
🍳 0x1f373
👧 0x1f467
📷 0x1f4f7
🎆 0x1f386
🙆 0x1f646
👦 0x1f466
👶 0x1f476
💆 0x1f486
🚶 0x1f6b6
😖 0x1f616
💦 0x1f4a6
🎶 0x1f3b6
👆 0x1f446
🐶 0x1f436
🍆 0x1f346
🍦 0x1f366
📖 0x1f4d6
🏆 0x1f3c6
🐦 0x1f426
♦ 0x2666
🍶 0x1f376
▶ 0x25b6
🕖 0x1f556
🌆 0x1f306
🏦 0x1f3e6
↖ 0x2196
⬆ 0x2b06
🈶 0x1f236
🎦 0x1f3a6
📶 0x1f4f6
🍧 0x1f367
🌷 0x1f337
🎌 0x1f38c
🚼 0x1f6bc
🏬 0x1f3ec
🚌 0x1f68c
🗼 0x1f5fc
♌ 0x264c
❌ 0x274c
👜 0x1f45c
🎬 0x1f3ac
💼 0x1f4bc
🐬 0x1f42c
🍜 0x1f35c
🚬 0x1f6ac
😌 0x1f60c
😜 0x1f61c
📼 0x1f4fc
✌ 0x270c
👼 0x1f47c
🙌 0x1f64c
👌 0x1f44c
💜 0x1f49c
🎫 0x1f3ab
🚻 0x1f6bb
🏫 0x1f3eb
♋ 0x264b
🗻 0x1f5fb
🕛 0x1f55b
🎅 0x1f385
👵 0x1f475
🇪 0x1f1ea
🎨 0x1f3a8
🎸 0x1f3b8
🐨 0x1f428
👘 0x1f458
🐸 0x1f438
🍘 0x1f358
🐘 0x1f418
🏈 0x1f3c8
🍸 0x1f378
🌸 0x1f338
😨 0x1f628
💘 0x1f498
👸 0x1f478
💨 0x1f4a8
👨 0x1f468
✨ 0x2728
👈 0x1f448
😘 0x1f618
🔨 0x1f528
🎈 0x1f388
🇺 0x1f1fa
🇸 0x1f1f8
🏨 0x1f3e8
♨ 0x2668
💈 0x1f488
✈ 0x2708
♈ 0x2648
🌈 0x1f308
↘ 0x2198
🚽 0x1f6bd
🏯 0x1f3ef
♿ 0x267f
🅿 0x1f17f
♏ 0x264f
🔯 0x1f52f
🚏 0x1f68f
🈯 0x1f22f
💟 0x1f49f
🙏 0x1f64f
👿 0x1f47f
👏 0x1f44f
💿 0x1f4bf
🎏 0x1f38f
💏 0x1f48f
➿ 0x27bf
👯 0x1f46f
🌟 0x1f31f
😏 0x1f60f
🎿 0x1f3bf
🎯 0x1f3af
🐯 0x1f42f
👟 0x1f45f
🐟 0x1f41f
🍟 0x1f35f
🍃 0x1f343
🚃 0x1f683
✳ 0x2733
🏣 0x1f3e3
🔳 0x1f533
⃣ 0x20e3
3 0x33
⃣ 0x20e3
🐛 0x1f41b
🐫 0x1f42b
🍻 0x1f37b
🍛 0x1f35b
🌻 0x1f33b
🐻 0x1f43b
🔫 0x1f52b
💋 0x1f48b
👻 0x1f47b
👫 0x1f46b
💛 0x1f49b
✋ 0x270b
👋 0x1f44b
📻 0x1f4fb
📫 0x1f4eb
💻 0x1f4bb
📀 0x1f4c0
😠 0x1f620
😰 0x1f630
🎐 0x1f390
📠 0x1f4e0
👀 0x1f440
💀 0x1f480
👐 0x1f450
🏀 0x1f3c0
🌀 0x1f300
💐 0x1f490
🐠 0x1f420
👠 0x1f460
🍰 0x1f370
♠ 0x2660
🐰 0x1f430
☀ 0x2600
🎀 0x1f380
💰 0x1f4b0
🛀 0x1f6c0
🍀 0x1f340
🉐 0x1f250
🎰 0x1f3b0
♐ 0x2650
⚠ 0x26a0
🅰 0x1f170
🔰 0x1f530
🏰 0x1f3f0
🏠 0x1f3e0
🕐 0x1f550
◀ 0x25c0
🚀 0x1f680
🔓 0x1f513
🎓 0x1f393
💓 0x1f493
😳 0x1f633
👃 0x1f443
😓 0x1f613
😣 0x1f623
🏃 0x1f3c3
💃 0x1f483
👣 0x1f463
🎃 0x1f383
😃 0x1f603
👳 0x1f473
📣 0x1f4e3
1 0x31
2 ⃣ 0x20e3
🍓 0x1f353
8 0x38
⃣ 0x20e3
7 0x37
⃣ 0x20e3
0 0x30
⃣ 0x20e3
9 0x39
⃣ 0x20e3
💣 0x1f4a3
0x23

⃣ 0x20e3
⛳ 0x26f3
🐳 0x1f433
2 0x32
😝 0x1f61d
👍 0x1f44d
🔍 0x1f50d
😭 0x1f62d
😍 0x1f60d
☝ 0x261d
💽 0x1f4bd
👽 0x1f47d
🎍 0x1f38d
💝 0x1f49d
♍ 0x264d
⛽ 0x26fd
🔝 0x1f51d
🗽 0x1f5fd
🚭 0x1f6ad
🏭 0x1f3ed
💍 0x1f48d
⚽ 0x26bd
📝 0x1f4dd
🐍 0x1f40d
〽 0x303d
🐭 0x1f42d
🍝 0x1f35d
📳 0x1f4f3
♓ 0x2653
🌃 0x1f303
🕓 0x1f553
🇨 0x1f1e8
🇳 0x1f1f3
🈳 0x1f233
🚓 0x1f693
🚧 0x1f6a7
㊗ 0x3297
🈷 0x1f237
🏧 0x1f3e7
↗ 0x2197
🚇 0x1f687
⬇ 0x2b07
🕗 0x1f557
🇫 0x1f1eb
🇷 0x1f1f7
🆗 0x1f197
🇰 0x1f1f0
🇷 0x1f1f7
🚗 0x1f697
🌇 0x1f307
💗 0x1f497
💇 0x1f487
🎇 0x1f387
🙇 0x1f647
👇 0x1f447
👷 0x1f477
😷 0x1f637
🇬 0x1f1ec
🇧 0x1f1e7
🐧 0x1f427
🐷 0x1f437
🎷 0x1f3b7
🐗 0x1f417
🎧 0x1f3a7
👗 0x1f457
♊ 0x264a
🕚 0x1f55a
🆚 0x1f19a
🚚 0x1f69a
🏪 0x1f3ea
🚺 0x1f6ba
⛪ 0x26ea
⛺ 0x26fa
⏪ 0x23ea
🈺 0x1f23a
🈚 0x1f21a
💚 0x1f49a
📺 0x1f4fa
😪 0x1f62a
👊 0x1f44a
☺ 0x263a
✊ 0x270a
😚 0x1f61a
💪 0x1f4aa
🇷 0x1f1f7
🇺 0x1f1fa
🇩 0x1f1e9
🇪 0x1f1ea
🍺 0x1f37a
🌺 0x1f33a
💊 0x1f48a
💺 0x1f4ba
🏊 0x1f3ca
🍊 0x1f34a
🌊 0x1f30a
🎺 0x1f3ba
✴ 0x2734
🕔 0x1f554
🚤 0x1f6a4
📴 0x1f4f4
🚄 0x1f684
🌄 0x1f304
🆔 0x1f194
🔴 0x1f534
👄 0x1f444
👴 0x1f474
😔 0x1f614
💤 0x1f4a4
😄 0x1f604
❤ 0x2764
💔 0x1f494
🍔 0x1f354
🍴 0x1f374
💄 0x1f484
🌴 0x1f334
🏄 0x1f3c4
🐔 0x1f414
🎤 0x1f3a4
⛄ 0x26c4
🐤 0x1f424
☔ 0x2614
🐴 0x1f434
🀄 0x1f004
👔 0x1f454
🈸 0x1f238
🕘 0x1f558
➡ 0x27a1
🚑 0x1f691
🈁 0x1f201
🅱 0x1f171
🏁 0x1f3c1
💱 0x1f4b1
🕑 0x1f551
🎡 0x1f3a1
♑ 0x2651
💑 0x1f491
🎑 0x1f391
💡 0x1f4a1
😡 0x1f621
💁 0x1f481
📱 0x1f4f1
😁 0x1f601
📡 0x1f4e1
🎁 0x1f381
🍱 0x1f371
🐑 0x1f411
🍡 0x1f361
👡 0x1f461
🔱 0x1f531
🎱 0x1f3b1
🐱 0x1f431
👑 0x1f451
🍁 0x1f341
☁ 0x2601
⚡ 0x26a1
————————————————
版权声明:本文为CSDN博主「maray」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/maray/article/details/104479182

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值