Apple Watch无法更改标签中的字体

时间:2015-03-27 11:08:32

标签: fonts label nsattributedstring watchkit apple-watch

我无法更改标签中的字体。 我在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(非通知和一瞥)。

2 个答案:

答案 0 :(得分:0)

我在我的WKInterfaceLabel上设置了与你的代码相似的字体。以下是一些要检查的内容,看看能否找出问题所在。

  1. 检查并确保您实际上将self.label连接到故事板中的正确标签。运行调试器并确保self.label不是nil。

  2. 运行调试器并确保labelFont不是nil。如果它是零,请尝试使用系统字体,然后再返回" Courier New"。

  3. 以下是我用来设置字体的代码。这实际上在标签中设置了两种不同的字体,使单位的尺寸更小。

    -(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放在一起时什么也没发生。