使用系统的表情,获取后的值转成NSString型,可直接显示到UILabel上
下面的代码使用block返回的所需的表情字符串数组:
#pragma mark 获取系统表情数组
+ (void)getSystemExpressionArray:(void(^)(NSArray *expressionAr)) expression
{
// EMOJI_CODE_TO_SYMBOL 是宏定义的转换函数 #define EMOJI_CODE_TO_SYMBOL(x) ((((0x808080F0 | (x & 0x3F000) >> 4) | (x & 0xFC0) << 10) | (x & 0x1C0000) << 18) | (x & 0x3F) << 24);
NSMutableArray *returnAr = [NSMutableArray new];
// 使用同步操作,把所有的值获取后再返还数组。
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
for (int i=0x1F600; i<=0x1F64F; i++)
{
if (i < 0x1F641 || i > 0x1F644)
{
int number = EMOJI_CODE_TO_SYMBOL(i);
NSString *epressionStr = [[NSString alloc] initWithBytes:&number length:sizeof(number) encoding:NSUTF8StringEncoding];
[returnAr addObject:epressionStr];
}
}
});
//打印数组中的值
for (int i = 0 ; i < returnAr.count; i ++)
{
NSLog(@"returnAr[%d]%@", i,returnAr[i]);
}
expression(returnAr);
}
效果截图: