首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS -如何检测字体是否粗体/黑色/重.?

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

Stack Overflow用户
提问于 2017-05-15 07:52:39
回答 3查看 1.6K关注 0票数 3

我想检测字体的样式(粗体heavy、)。但我只能检测字体是否粗体。

代码语言:javascript
复制
BOOL isBold = (font.fontDescriptor.symbolicTraits & UIFontDescriptorTraitBold)!=0;

UIFontDescriptorSymbolicTraits不存在黑或重性状。

一种方法是检查字体名是否包含“黑”或“重”字符串,但这似乎不可靠。

UIFontWeightTrait,但这只是为了UIFont systemFontOfSize: weight:

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-15 08:08:07

检查它是Heavy还是Black

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

其他使用选项的列表非常简单,只需使用"CTFont......Usage“格式,我测试的列表如下:

代码语言:javascript
复制
//CTFontUltraLightUsage,CTFontThinUsage,CTFontLightUsage,CTFontMediumUsage,CTFontDemiUsage

以及如何创建具有用法的字体,比如:

代码语言:javascript
复制
UIFontDescriptor *fontDescriptor = [[UIFontDescriptor alloc] initWithFontAttributes:@{@"NSCTFontUIUsageAttribute":@"CTFontHeavyUsage"}];
UIFont *font = [UIFont fontWithDescriptor:fontDescriptor size:17];

用于检查的Swift3版本:

代码语言:javascript
复制
if let fontUsage = font.fontDescriptor.fontAttributes["NSCTFontUIUsageAttribute"] as? String {
    if fontUsage == "CTFontHeavyUsage" {
        print("It's Heavy")
    }
    else if fontUsage == "CTFontBlackUsage" {
        print("It's Black")
    }
}
票数 3
EN

Stack Overflow用户

发布于 2017-05-15 08:01:20

快速检测粗大/黑色字体的版本

代码语言:javascript
复制
let fontUsage = font.fontDescriptor.fontAttributes["NSCTFontUIUsageAttribute"] as! String
if fontUsage == "CTFontHeavyUsage"{
    print("It is heavy")
}
else if fontUsage == "CTFontBlackUsage"{
    print("it's black")
}

并创建具有属性的字体:

代码语言:javascript
复制
let fontDescriptor = UIFontDescriptor(fontAttributes: ["NSCTFontUIUsageAttribute" : "CTFontHeavyUsage"])
let font = UIFont(descriptor: fontDescriptor, size: 17)
票数 1
EN

Stack Overflow用户

发布于 2017-05-15 08:12:52

这将给出字体是否粗体:

代码语言:javascript
复制
var isBold = label.font.fontDescriptor.symbolicTraits.contains(.traitBold)

下面是一些经验:这给出了正确的答案,即使设置了粗体字体,或者手动将字体的symbolicTraits设置为粗体:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43974080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档