首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从常规UIFont创建粗体UIFont?

如何从常规UIFont创建粗体UIFont?
EN

Stack Overflow用户
提问于 2013-04-15 21:05:16
回答 8查看 24.9K关注 0票数 36

如果我有一个UIFont对象,是否可以将其转换为粗体?我不知道字体名称,我只有一个UIFont对象。我想要的是像这样的函数

代码语言:javascript
复制
UIFont *boldFontFromFont(UIFont *input)
{
    return [input derivedFontWithFontWeight:UIFontWeightBold];
}

如何更改代码以使其正常工作。(上面的代码不起作用,我只是为了说明这一点而虚构的。)

提前谢谢。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-04-15 21:23:45

要获得粗体字体,您需要从字体系列中传递字体的特定名称。您可以从给定的字体中获取字体系列名称,然后列出该系列中的所有字体。一般来说,粗体字体的名称中会包含“粗体”,但格式并不严格,可能会有像"Helvetica-BoldOblique“这样的变体。您可以从以下代码开始:

代码语言:javascript
复制
- (UIFont *)boldFontFromFont:(UIFont *)font
{
    NSString *familyName = [font familyName];
    NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
    for (NSString *fontName in fontNames)
    {
        if ([fontName rangeOfString:@"bold" options:NSCaseInsensitiveSearch].location != NSNotFound)
        {
            UIFont *boldFont = [UIFont fontWithName:fontName size:font.pointSize];
            return boldFont;
        }
    }
    return nil;
}
票数 14
EN

Stack Overflow用户

发布于 2014-01-27 00:44:40

iOS 7引入了一个新的UIFontDescriptor类,这使得它变得更容易:

代码语言:javascript
复制
UIFont *font = [UIFont fontWithName:@"Helvetica Neue" size:12];
NSLog(@"plain font: %@", font.fontName); // “HelveticaNeue”

UIFont *boldFont = [UIFont fontWithDescriptor:[[font fontDescriptor] fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold] size:font.pointSize];
NSLog(@"bold version: %@", boldFont.fontName); // “HelveticaNeue-Bold”

UIFont *italicFont = [UIFont fontWithDescriptor:[[font fontDescriptor] fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitItalic] size:font.pointSize];
NSLog(@"italic version: %@", italicFont.fontName); // “HelveticaNeue-Italic”

UIFont *boldItalicFont = [UIFont fontWithDescriptor:[[font fontDescriptor] fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold | UIFontDescriptorTraitItalic] size:font.pointSize];
NSLog(@"bold & italic version: %@", boldItalicFont.fontName); // “HelveticaNeue-BoldItalic”

对于那些在这里寻找Cocoa (macOS)等价物的人来说,UIFontDescriptor来自NSFontDescriptor,从10.3开始就可以使用了。

票数 97
EN

Stack Overflow用户

发布于 2014-11-20 12:59:59

如果您正在寻找swift implementation

代码语言:javascript
复制
let normalFont = UIFont(name: "FONT_NAME", size: CGFloat(20))!
let boldFont = UIFont(descriptor: normalFont.fontDescriptor.withSymbolicTraits(.traitBold)!, size: normalFont.pointSize)

希望这能有所帮助!干杯!

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

https://stackoverflow.com/questions/16015916

复制
相关文章

相似问题

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