iOS系统自带的表情在view,textfield,UIimageView展示时已经将uicode做过处理,直接展示成图片的形式,其实质依然是UTF8的符号.想要获取系统的表情,要首先知道表情对应的UTF8 的编码方式,我将其中一部分的图片展示出来 ,然后用UIButton排列,iOS 7后又增加了300多个表情符号,这些都可以百度查到,现在上代码:
//将数字转为
#define EMOJI_CODE_TO_SYMBOL(x) ((((0x808080F0| (x & 0x3F000)>> 4)| (x & 0xFC0)<< 10)| (x & 0x1C0000)<< 18)| (x & 0x3F)<< 24);
定义的宏将转成UTF8,取出对应的表情符号:
//获取默认表情数组
- (NSArray*)defaultEmoticons {
NSMutableArray *array= [NSMutableArray new];
for(inti=0x1F600;i<=0x1F64F;i++) {
if(i < 0x1F641|| i > 0x1F644){
intsym = EMOJI_CODE_TO_SYMBOL(i);
NSString*emoT= [[NSStringalloc]initWithBytes:&symlength:sizeof(sym)encoding:NSUTF8StringEncoding];
[arrayaddObject:emoT];
}
}
returnarray;
}
在将对应数组里的表情依次存放到UIButton里,贴出部分代码:
//获取数组
NSArray*arrEmotion = [selfdefaultEmoticons];
//将表情放到UIButton里
CGFloatW = 30;
CGFloatH = 30;
CGFloatX;
CGFloatY;
for(inti = 0;i count; i ++) {
X = 10+(W+5)* (i%10);
Y = 260+ (i/10)*(H +5);
UIButton*biaoqing =[[UIButtonalloc]init];
biaoqing.backgroundColor= [UIColorredColor];
biaoqing.frame= CGRectMake(X,Y, W, H);
[self.viewaddSubview:biaoqing];
NSString*Str = arrEmotion[i];
[biaoqing setTitle:StrforState:UIControlStateNormal];
biaoqing.tag= i;
[biaoqing addTarget:selfaction:@selector(biaoqingClick:)forControlEvents:UIControlEventTouchUpInside];
}
这样就完成了 在你自定义键盘里的表情添加,同时设置该点击事件将表情符号添加进textField或者Label里:
- (void)biaoqingClick:(UIButton*)biaoqing{
NSArray*emoji = [selfdefaultEmoticons];
NSString*str = emoji[biaoqing.tag];
self.textField.text= str;
}
在后台服务器处理表情方面 ,mysql 5.4之后 就可以自动识别 uicode的表情编码,并且经验证iOS端的表情符号在安卓上也可以识别,如果mysql的版本过低,报错无法识别uicode编码,可以参见服务端对emoji支持的博客:http://segmentfault.com/a/1190000000616820
未完 ,待续
后续贴出做出类似 自定义表情的展示方式 。