今天一个朋友说在项目中使用了iconfont,这是一个自定义的字体,可以直接把图片当成文字显示,节省了内存。
- (void)viewDidLoad {
[super viewDidLoad];
self.label.font = [UIFont fontWithName:@"iconfont" size:30];
self.label.text=[NSString stringWithFormat:@"\U0000e601"];//用这个也可以但是我不知道为什么可以
//我的朋友觉得上面的可以下面的就不行,总的原因是没有正确的看待\U000E601这个字段的含义,他不是字符串的简单拼接,而是对一个整数进行了转义。
NSString *str0 = @"e601";
self.label.text = [NSString stringWithFormat:@"\\U0000%@",str0];
//应该用下面的方式进行转化
//这是服务器返回的字段
NSString * num =@"e601";
//unicode码 是个无符号整数,要把这个16进制字符串进行转换才行。可以转换成10进制也可以转换为16进制,转换成10进制方便些。
unichar ch = [self stringFromHexString:num];
NSString * str = [NSString stringWithCharacters:&ch length:1];
self.label.text = str;
}
- (int )stringFromHexString:(NSString *)hexString { //
hexString=[hexString lowercaseString];//转换为小写
int length =(int) hexString.length;
unsigned int sum = 0;
for (int i=length-1; i>=0; i--) {
char c = (char)[hexString characterAtIndex:i];
if (c>='0'&&c<='9') {
c = c-'0';
NSLog(@"-->");
}
else if(c>='a'&&c<='f')
{
c=c-'a'+10;
NSLog(@"<--");
}
sum+=c*(int)pow(16, length-1-i);
}
return sum;
}