我在UILabel
中使用unicode(“\ uE43B”),奇怪的是它在模拟器中工作但在真实设备中不起作用。代码如下:
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];
[self.view addSubview:label];
label.text = @"The emoji is:\uE43B";
label.textAlignment = NSTextAlignmentCenter;
结果在模拟器中运行:
当我在我的设备(iPhone6 9.3.2)中运行它时,它会显示一个矩形字符。
我在Google上搜索\uE43B
,this site说:
这是一个私人使用代码点。也就是说,故意不将其分配给任何角色。它在版本1.1中添加到Unicode,属于块专用区。
但我仍然不明白模拟器是如何工作的,像微信这样的应用也可以显示表情符号。
答案 0 :(得分:1)
您可能在Mac上使用自己未在iPhone上使用的自定义字体。如您所知,这不是一个正确的Unicode代码点。它是一个私人使用的角色。如果需要,可以将这些代码点添加到字体中。
iOS模拟器只是一个Mac应用程序,包含与Mac兼容的UIKit版本。即使它们在iOS设备上不可用,您的Mac上可用的内容也可供模拟器使用。
您引用的特定字符为U+1F38F (CARP STREAMER)。 我不知道为什么你把它映射到U + E43B。你可能有一个亚洲字体,它将此作为遗留代码点(私人使用字符的常见用途)。