过去,如果我想在同一文本上使用粗体和斜体,我会按名称选择一种字体,如下所示:
font = [UIFont fontWithName:@"HelveticaNeue-BoldItalic" size:size];
现在,我正在尝试使用当前的iOS系统字体San Francisco进行此操作。 This answer表示,按名称引用该字体并不安全,实际上,当我尝试使用该字体时,某些与字体相关的方法无济于事,而某些应用程序崩溃了。
当然有boldSystemFontOfSize
和italicSystemFontOfSize
方法,但没有boldItalicSystemFontOfSize
方法。
是否还有其他方式可以在旧金山字体中使用粗体+斜体?
答案 0 :(得分:0)
这是基于@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
将返回系统字体。