gpt4 book ai didi

iOS - 如何检测字体是否为粗体/黑色/粗体......?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:25:51 27 4
gpt4 key购买 nike

我想检测字体的样式(粗体粗体黑色)。但我只能检测字体是否为粗体。

BOOL isBold = (font.fontDescriptor.symbolicTraits & UIFontDescriptorTraitBold)!=0;

UIFontDescriptorSymbolicTraits 中没有黑色或沉重的特征。

一种方法是检查字体名称是否包含'black'或'heavy'字符串,但这似乎不可靠。

UIFontWeightTrait,但它只是用于 UIFont systemFontOfSize: weight:

如果有可用的样式,我想创建带有样式的自定义字体。

最佳答案

检查它是还是黑色:

NSString *fontUsage = font.fontDescriptor.fontAttributes[@"NSCTFontUIUsageAttribute"];
if ([fontUsage isEqualToString:@"CTFontHeavyUsage"]) {
NSLog(@"It's Heavy");
}
else if ([fontUsage isEqualToString:@"CTFontBlackUsage"]) {
NSLog(@"It's Black");
}

其他使用选项的列表很简单,把usage格式写成"CTFont......Usage"就行了,我测试的列表是:

//CTFontUltraLightUsage,CTFontThinUsage,CTFontLightUsage,CTFontMediumUsage,CTFontDemiUsage

以及如何创建带有用法的字体,例如 heavy:

UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] initWithFontAttributes:@{@"NSCTFontUIUsageAttribute":@"CTFontHeavyUsage"}];
UIFont *font = [UIFont fontWithDescriptor:fontDescriptor size:17];

Swift3 版本检查:

if let fontUsage = font.fontDescriptor.fontAttributes["NSCTFontUIUsageAttribute"] as? String {
if fontUsage == "CTFontHeavyUsage" {
print("It's Heavy")
}
else if fontUsage == "CTFontBlackUsage" {
print("It's Black")
}
}

关于iOS - 如何检测字体是否为粗体/黑色/粗体......?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43974080/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com