您的位置:首页 > 移动开发 > IOS开发

iOS 里面的iconfont问题

2016-01-13 23:12 375 查看
今天一个朋友说在项目中使用了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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: