fontDescriptorWithSymbolicTraits 方法返回不同字体系列中的新字体描述符引用,而不是 iOS13 上的相同字体系列
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[ViewController bold];
}
+(UIFont *)systemFontCaption
{
return [UIFont systemFontOfSize:20.0f weight:UIFontWeightRegular];
}
+(UIFont*)bold
{
UIFont *font = [ViewController systemFontCaption];
UIFontDescriptor *fontDescriptor = [UIFontDescriptor fontDescriptorWithName:font.fontName size:font.pointSize];
UIFontDescriptor *styleDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:[fontDescriptor symbolicTraits] | UIFontDescriptorTraitBold];
UIFont *boldFont = [UIFont fontWithDescriptor:styleDescriptor size:font.pointSize];
return boldFont;
}
预期成果:
粗体字体应在同一字体系列中,即SFUI-常规
实际结果:
粗体字体在不同的字体系列中,即时代新罗马
看起来苹果对属性字符串的字体有一个错误,因为......iOS 13 测试版!!但此问题仅在 Xcode 11+ 上显示。
开放式雷达
最好的解决方案是不要使用系统字体,而是精确使用字体名称。