如何将自定义字体应用于 TTTAttributedLabel

Posted

技术标签:

【中文标题】如何将自定义字体应用于 TTTAttributedLabel【英文标题】:How to apply custom font to TTTAttributedLabel 【发布时间】:2014-03-21 08:57:05 【问题描述】:

我在我的项目中使用TTTAttributedLabel。我正在尝试为该标签应用自定义字体。

#define DEFAULT_FONT(s)     [UIFont fontWithName:MY_FONT_NAME size:s]

我使用下面的代码来设置字体:

@property(nonatomic, strong) TTTAttributedLabel *welcomeMessage;

NSString *welcomeMessageString = [[NSString stringWithFormat:@"%@",[self.dashboardViewModel getWelcomeMessage]] uppercaseString];
    [self.welcomeMessage setText:welcomeMessageString afterInheritingLabelAttributesAndConfiguringWithBlock:^NSMutableAttributedString *(NSMutableAttributedString *mutableAttributedString)
        NSRange boldRange = [[mutableAttributedString string] rangeOfString:@"Welcome " options:NSCaseInsensitiveSearch];

        NSRange colorRange = NSMakeRange((boldRange.location + boldRange.length), (welcomeMessageString.length - boldRange.length));
        UIFont *systemBoldFont = DEFAULT_FONT(13);
        CTFontRef boldFont = CTFontCreateWithName((__bridge CFStringRef)systemBoldFont.fontName, systemBoldFont.pointSize, NULL);
        if (boldFont) 
            [mutableAttributedString addAttribute:(NSString *)kCTForegroundColorAttributeName value:(id)RGB(134.0, 0, 0).CGColor range:colorRange];
            CFRelease(boldFont);

        


        return mutableAttributedString;
    ];
    self.welcomeMessage.font = DEFAULT_FONT(13);

但在我的应用程序中,字体没有被应用。我需要黑色的“欢迎”文本,文本的其余部分为红色。但对于我的标签,我需要应用我的自定义字体。

【问题讨论】:

你是否在 info.plist 文件中添加了字体名称? 是的,我添加了@SujithPt 【参考方案1】:

试试这个,

 CTFontRef boldFont = CTFontCreateWithName((__bridge CFStringRef)systemBoldFont.fontName, systemBoldFont.pointSize, NULL);
    if (boldFont) 
        [mutableAttributedString addAttribute:(NSString *)kCTFontAttributeName value:(__bridge id)boldFont range:nameRange];
        CFRelease(boldFont);

    

【讨论】:

我需要为特定范围添加字体颜色。但我希望字体应用于标签 @Vinodh 在您的代码中颜色是否有效或字体和颜色都无效? 上面的代码可以设置字体,也可以用这个添加颜色代码【参考方案2】:

这里

if (boldFont) 
    [mutableAttributedString addAttribute:(NSString *)kCTForegroundColorAttributeName value:(id)RGB(134.0, 0, 0).CGColor range:colorRange];
    CFRelease(boldFont);

您正在检查boldFont,然后添加颜色。这是正确的吗?如果您需要添加字体,请使用kCTFontAttributeName 键。

【讨论】:

以上是关于如何将自定义字体应用于 TTTAttributedLabel的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义字体添加到我的应用程序? [复制]

无法将自定义字体添加到应用程序

自定义字体未显示在字体系列列表中

如何配置 webpack 以将自定义字体加载到故事书中?

如何将自定义字体系列添加到 react-reader npm

如何将自定义函数应用于每行的熊猫数据框[重复]