Как установить fontWithName и курсив - PullRequest
0 голосов
/ 29 января 2012

Я знаю, как установить шрифт с помощью fontWithName: и как установить системный шрифт, как жирный, так и курсивный. Но как мне установить шрифт с именем, если я хочу, чтобы он был курсивом?

myLabel.font = [UIFont fontWithName:@"Georgia" size:15]; 

или

myLabel.font = [UIFont italicSystemFontOfSize:15];

Хочу курсивом Грузия, как?

Ответы [ 5 ]

6 голосов
/ 29 января 2012

Чтобы выделить его курсивом, вам нужно сделать что-то вроде:

[UIFont fontWithName:@"Georgia-Italic" size:15];

Или:

[UIFont fontWithName:@"GeorgiaItalic" size:15];

Чтобы узнать, какой из них вам лучше всего использовать:

NSArray *fontArray = [UIFont fontNamesForFamilyName:@"Georgia"];

А затем распечатайте это в отладчике, чтобы увидеть, какие подтипы доступны.

Для использования системного шрифта есть:

[UIFont boldSystemFontOfSize:SIZE];

И

[UIFont italicSystemFontOfSize:SIZE];

Надеюсь, это поможет:)

2 голосов
/ 02 мая 2016

Не пытайтесь играть с именами шрифтов. С iOS7 +, используя дескриптор шрифта, вам не нужны имена:

// original font to modify
UIFont *font = [UIFont fontWithName:@"Georgia" size:15];
// adding bold and italic descriptor
UIFontDescriptor *fontDescriptor = [font.fontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold | UIFontDescriptorTraitItalic];
// making the new font; size:0 means 'keep the size as is'
myLabel.font = [UIFont fontWithDescriptor:fontDescriptor size:0];

источник

С iOS3.2 +, вы можете попробовать CoreText:

// original font to modify
UIFont *font = [UIFont fontWithName:@"Georgia" size:15];
// CoreText font equivalent
CTFontRef ctFont = CTFontCreateWithName((__bridge CFStringRef)font.fontName, font.pointSize, NULL);
// adding bold and italic
CTFontRef ctFont2 = CTFontCreateCopyWithSymbolicTraits(ctFont, 0.0, NULL, kCTFontBoldTrait | kCTFontItalicTrait, kCTFontBoldTrait | kCTFontItalicTrait);
CFRelease(ctFont);
// back to UIFont
UIFont *newfont = [UIFont fontWithName:CFBridgingRelease( CTFontCopyPostScriptName(ctFont2)) size:CTFontGetSize(ctFont2)];
CFRelease(ctFont2);
2 голосов
/ 29 января 2012

вы должны знать имя варианта, что-то вроде "GeorgiaIT" или "GeorgiaItalic".

1 голос
/ 11 июля 2013

Та же проблема здесь.Я решил это таким образом, что даст либо (1) курсивное лицо, которое вы ищете (при условии, что оно называется ...- курсив), либо (2) по крайней мере базовый шрифт, чтобы вещи (надеюсь) не зависали,Кстати, все дело в NSRange в том, что мы игнорируем, например, -ItalicBold, хотя обычно это -BoldItalic, поэтому мы все равно проигнорируем его.Приветствия -W

UIFont *myBaseForItalicFont = [UIFont preferredFontForTextStyle:UIFontDescriptorTextStyleBody];
NSString *myFontFamilyName = myBaseForItalicFont.familyName;
NSArray *myFontNames = [UIFont fontNamesForFamilyName:myFontFamilyName];
for (NSString *aFontName in myFontNames)
{
    NSRange myRange = [aFontName rangeOfString:@"-Italic"];
    if (myRange.location != NSNotFound)
    {
        if (myRange.location + myRange.length >= aFontName.length)
        {
            // This is it! Nothing before the hyphen, nothing after.
            myBaseForItalicFont = [UIFont fontWithName:aFontName size:myRVGItalicFont.pointSize];
            break;
        }
    }
}
0 голосов
/ 13 апреля 2017

Здесь ответ Cœur в Swift:

let originalFont = UIFont(name: "Georgia", size: 15)
// or: UIFont.preferredFont(forTextStyle: .body)
let originalFontDesc = originalFont.fontDescriptor
let italicFontDesc = originalFontDesc.withSymbolicTraits(.traitItalic)
let italicFont = UIFont(descriptor: italicFontDesc, size: 0)
myLabel.font = italicFont
...