Шрифт Сан-Франциско: полужирный + курсив? - PullRequest
0 голосов
/ 26 февраля 2019

Раньше, если бы я хотел использовать жирный шрифт и курсив для одного и того же текста, я выбирал шрифт по имени, например:

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

Теперь я пытаюсь сделать это стекущий системный шрифт iOS, Сан-Франциско. В этом ответе говорится, что ссылаться на этот шрифт по имени небезопасно, и, действительно, когда я пытаюсь это сделать, некоторые методы, связанные со шрифтами, ничего не делают, а некоторые вызывают сбой приложения.

Конечно, естьэто метод boldSystemFontOfSize и italicSystemFontOfSize, но не метод boldItalicSystemFontOfSize.

Оставляет ли это какой-либо другой способ использовать жирный шрифт + курсив со шрифтом Сан-Франциско?

1 Ответ

0 голосов
/ 26 февраля 2019

Вот категория, основанная на ответе , предложенном @rmaddy:

@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 вернет системный шрифт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...