我在我的iOS应用中使用http://symbolset.com图标,但无法正确显示相机符号。在symbolset docs和FontForge中,它表示unicode值为1F4F7。
以下是相关代码:
[self setTitle:[NSString stringWithFormat:@"%C", (unichar)0x1F4F7] forState:controlState];
我也尝试过:
[self setTitle:[NSString stringWithFormat:@"%C", (unichar)0x0001F4F7] forState:controlState];
但是这适用于复选标记符号:
[self setTitle:[NSString stringWithFormat:@"%C", (unichar)0x2713] forState:controlState];
字体是开放式的。我也尝试将unicode值放在我的Localizable.strings文件中,但是没有用。我需要将其设为TrueType字体吗?
更新:我尝试过转换为TrueType字体并遇到同样的问题。
答案 0 :(得分:3)
问题是unichar只有16位,但你想要的字符在基本多语言平面(BMP)之外,因此在UTF-16(代理对)中需要2个字符。你可以弄清楚这一对,或做类似的事情:
UTF32Char c = 0x1F4F7;
NSData *utf32Data = [NSData dataWithBytes:&c length:sizeof(c)];
NSString *camera = [[NSString alloc] initWithData:utf32Data encoding:NSUTF32LittleEndianStringEncoding];
//do stuff with camera here and release if not using ARC