Apple Watch 无法更改标签中的字体
Apple Watch can't change font in label
我无法更改标签中的字体。
我在 WatchKit App 和 WatchKit Extension 的 Info.plist 中添加了 "Font provided by application",并在 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(不是 Notification 和 Glance)。
我在我的 WKInterfaceLabel 上使用看起来像你的代码设置了字体。这里有一些要检查的东西,看看你是否能找出问题所在。
检查并确保您确实将 self.label 连接到情节提要中的正确标签。 运行 调试器并确保 self.label 不为零。
运行 调试器并确保 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];
}
我明白问题出在哪里了。 Xcode不建立Arial、Courier等标准字体,而是安装系统中没有的、从网上下载的字体。
所以当我输入 Arial 和 Courier 时,什么也没有发生。
我无法更改标签中的字体。
我在 WatchKit App 和 WatchKit Extension 的 Info.plist 中添加了 "Font provided by application",并在 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(不是 Notification 和 Glance)。
我在我的 WKInterfaceLabel 上使用看起来像你的代码设置了字体。这里有一些要检查的东西,看看你是否能找出问题所在。
检查并确保您确实将 self.label 连接到情节提要中的正确标签。 运行 调试器并确保 self.label 不为零。
运行 调试器并确保 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];
}
我明白问题出在哪里了。 Xcode不建立Arial、Courier等标准字体,而是安装系统中没有的、从网上下载的字体。 所以当我输入 Arial 和 Courier 时,什么也没有发生。