iOS 里面的iconfont问题

今天一个朋友说在项目中使用了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;
}



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值