我想检测字体的样式(粗体,重,黑色)。但我可以检测字体是否粗体。
BOOL isBold = (font.fontDescriptor.symbolicTraits & UIFontDescriptorTraitBold)!=0;
UIFontDescriptorSymbolicTraits
中没有黑色或重型特征。
一种方法是检查字体名称是否包含'black'或'heavy'字符串,但这似乎不可靠。
有UIFontWeightTrait
,但仅适用于UIFont systemFontOfSize: weight:
如果有可用的样式,我想用样式创建自定义字体。
答案 0 :(得分:3)
检查它是重还是黑色:
hibernate.cache.keys_factory=default
其他使用选项的列表非常简单,只需将使用格式化为" CTFont ......用法",我测试的列表是:
NSString *fontUsage = font.fontDescriptor.fontAttributes[@"NSCTFontUIUsageAttribute"];
if ([fontUsage isEqualToString:@"CTFontHeavyUsage"]) {
NSLog(@"It's Heavy");
}
else if ([fontUsage isEqualToString:@"CTFontBlackUsage"]) {
NSLog(@"It's Black");
}
以及如何创建使用的字体,如重:
//CTFontUltraLightUsage,CTFontThinUsage,CTFontLightUsage,CTFontMediumUsage,CTFontDemiUsage
用于检查的Swift3 版本:
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] initWithFontAttributes:@{@"NSCTFontUIUsageAttribute":@"CTFontHeavyUsage"}];
UIFont *font = [UIFont fontWithDescriptor:fontDescriptor size:17];
答案 1 :(得分:1)
用于检测重/黑色字体的Swift版本
let fontUsage = font.fontDescriptor.fontAttributes["NSCTFontUIUsageAttribute"] as! String
if fontUsage == "CTFontHeavyUsage"{
print("It is heavy")
}
else if fontUsage == "CTFontBlackUsage"{
print("it's black")
}
并创建包含属性的字体:
let fontDescriptor = UIFontDescriptor(fontAttributes: ["NSCTFontUIUsageAttribute" : "CTFontHeavyUsage"])
let font = UIFont(descriptor: fontDescriptor, size: 17)
答案 2 :(得分:0)