我无法更改标签中的字体。
我在WatchKit App和WatchKit Extension的Info.plist中添加了“应用程序提供的字体”,并在Bundle Recourse中添加了两个字体项目。
当我编译代码时
for (NSString* family in [UIFont familyNames])
NSLog(@"|%@"",family);
我发现连接的所有字体的列表:“| Courier New |”
但它不起作用:
NSMutableAttributedString *attString =[[NSMutableAttributedString alloc]
initWithString: @"Yano rocks! Always"];
[attString setAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Courier New" size:20.0]} range:NSMakeRange(0, attString.string.length)];
[self.loadingLabel setAttributedText:attString];
或
UIFont* labelFont = [UIFont fontWithName:@"Courier New" size:16];
NSAttributedString* lab = [[NSAttributedString alloc]
initWithString:@"Text" attributes:@{NSFontAttributeName: labelFont}];
[self.label setAttributedText:lab];
此外,任何系统字体都不起作用!
请帮助!
P.S。我按照说明做了一切:[link](http://www.tech-recipes.com/rx/53710/how-do-i-use-custom-fonts-in-my-apple-watch-app/)
我使用Watch App(非通知和一瞥)。
答案 0 :(得分:0)
我在我的WKInterfaceLabel上设置了与你的代码相似的字体。以下是一些要检查的内容,看看能否找出问题所在。
检查并确保您实际上将self.label连接到故事板中的正确标签。运行调试器并确保self.label不是nil。
运行调试器并确保labelFont不是nil。如果它是零,请尝试使用系统字体,然后再返回" Courier New"。
以下是我用来设置字体的代码。这实际上在标签中设置了两种不同的字体,使单位的尺寸更小。
-(void)setValue:(NSString*)value withUnits:(NSString*)units onLabel:(WKInterfaceLabel*)lable useLargeSize:(BOOL)useLargeSize
{
NSMutableAttributedString* str = [[NSMutableAttributedString alloc] initWithString:[value stringByAppendingString:units]];
if (useLargeSize)
{
[str setAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:36]} range:NSMakeRange(0, value.length)];
[str setAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:18]} range:NSMakeRange(value.length, units.length)];
}
else
{
[str setAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:16]} range:NSMakeRange(0, value.length)];
[str setAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:10]} range:NSMakeRange(value.length, units.length)];
}
[lable setAttributedText:str];
}
答案 1 :(得分:0)
我明白这是什么问题。 Xcode不会建立标准字体,如Arial,Courier等,但会安装不在系统中并从Internet下载的字体。 所以当我把Arial和Courier放在一起时什么也没发生。