0

我在我的 iOS 应用程序中使用http://symbolset.com作为图标,但无法正确显示相机符号。在符号集文档和 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 字体并遇到同样的问题。

4

1 回答 1

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
于 2012-09-11T16:11:13.977 回答