我试图展示"高音谱号"在UILabel,但它不起作用。但是,NSLog能够显示它。
NSString *strM = @"\U0001d11e";
NSLog(@"treble clef works: %@",strM); //works
NSLog(@"works: "); //works
UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
[self.view addSubview:lbl];
lbl.text = strM; //shows "empty" or (box around a question mark)
在UILabel
中显示该Unicode字符我缺少什么?
答案 0 :(得分:1)
由于Xcode碰巧使用的字体具有高音谱号字符的字形,因此它显示在NSLog消息中。
但是,UILabel使用的字体并不包含该特定Unicode字符的字形。这就是为什么你在问号周围看到一个"框。"
如果你尝试使用更常见的Unicode字符,你会发现代码本身没有问题。
一种选择是切换到支持该特定字符的其他字体。
如果不可能,你可以试试高音谱号的use an NSAttributedString
with an inline image。
答案 1 :(得分:0)
然后验证了字体在系统中:
NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++)
{
NSString *fontFamily = [fontFamilies objectAtIndex:i];
NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
NSLog (@"%@: %@", fontFamily, fontNames);
}
子类UIView :(这对我来说最好)
[(NSString *)@&#34; \ U0001d11e&#34; drawInRect:CGRectMake(50 + 10,50-15,80,20)withFont:[UIFont boldSystemFontOfSize:100]];
将unicode输出到标签:(仍然在这里发布)
[lbl setFont:[UIFont fontWithName:@"Symbola.ttf" size: 40]];
lbl.text = @"\U0001D11E";