我正在为标签添加属性文本,因为我们想在iOS 8中使用旧金山字体,我们需要设置字距。
在我的故事板中,我设置了一个令人讨厌的字体,所以如果我尝试应用的字体不起作用,我马上就会知道。
我已将字体添加到项目中,将相应的条目添加到"应用程序提供的字体"在Info.plist中验证它们是否包含在目标"复制捆绑资源"在构建阶段。 FontBook中这些字体的PostScript名称是SFUIDisplay- [variant]。
这有效:
[cellLabel setTextColor: [UIColor whiteColor]];
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], NSForegroundColorAttributeName,
[UIFont fontWithName:@"SFUIDisplay-Regular" size:17.0], NSFontAttributeName,
@1.2, NSKernAttributeName,
nil];
cellLabel.attributedText = [[NSAttributedString alloc] initWithString:showTitle attributes:attributes];
还可以用粗体代替常规字体。如果我尝试使用Light,Thin或Ultralight变体,我会得到不同的结果。在iPad上,我得到了令人讨厌的字体,我把它设置为故事板。在iPhone上,我获得SF UI Display Regular(或者与我未经训练的眼睛无法区分的东西)。如果我使用它而不是归因文本:
[cellLabel setFont:[UIFont fontWithName:@"SFUIDisplay-Light" size:17.0]];
我在两台设备上都使用Regular变体而不是Light,Thin或Ultralight,而Regular和Bold按预期工作。我在iOS 8和9中得到了相同的结果。
我还发现,如果我在标签的属性检查器中将字体设置为Custom > SF UI Display Light
,我可以在Light,Regular和Bold之间成功切换,但后来我失去了Ultralight和Thin。同样,如果我将其更改为Ultralight,我可以在Ultralight,Regular和Bold之间进行更改等。
这似乎是一个错误,但我很难弄清楚它是否与字体,iOS或其他东西有关。还有其他人看到过这种奇怪的行为吗?
在你问之前,"为什么不在Xcode中设置字体并继续你的生活?"我告诉你我们需要将一个场景用于多种用途,因此用于任何特定场景的实际字体都是变量。