【问题标题】:San Francisco font: bold + italic?旧金山字体:粗体+斜体?
【发布时间】:2019-07-20 06:57:26
【问题描述】:

过去,如果我想在同一文本上使用粗体和斜体,我会按名称选择字体,如下所示:

font = [UIFont fontWithName:@"HelveticaNeue-BoldItalic" size:size];

现在我正在尝试使用当前的 iOS 系统字体 San Francisco。 This answer 表示按名称引用此字体是不安全的,实际上,当我尝试使用时,一些与字体相关的方法什么都不做,有些会导致应用程序崩溃。

当然有boldSystemFontOfSizeitalicSystemFontOfSize 方法,但没有boldItalicSystemFontOfSize 方法。

是否还有其他方式可以在 San Francisco 字体中使用粗体+斜体?

【问题讨论】:

标签: ios objective-c fonts


【解决方案1】:

这是基于@rmaddy 建议的answer 的类别:

@interface UIFont (UIFontBoldItalic)
+ (UIFont *)boldItalicSystemFontOfSize:(CGFloat)fontSize;
@end

@implementation UIFont (UIFontBoldItalic)
+ (UIFont *)boldItalicSystemFontOfSize:(CGFloat)fontSize {
    UIFontDescriptor *fontDescriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody];
    uint32_t existingTraitsWithNewTrait = [fontDescriptor symbolicTraits] | UIFontDescriptorTraitBold | UIFontDescriptorTraitItalic;
    UIFontDescriptor *updatedFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:existingTraitsWithNewTrait];
    UIFont *font = [UIFont fontWithDescriptor:updatedFontDescriptor size:fontSize];
    return font;
}
@end

虽然这没有在任何地方指定“系统字体”或“旧金山”,但我认为UIFontTextStyleBody 将返回系统字体。

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 2016-01-10
    • 1970-01-01
    • 2011-07-18
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    相关资源
    最近更新 更多