如何设置fontWithName和italic

时间:2012-01-29 10:45:37

标签: ios iphone fonts uifont

我知道如何使用fontWithName:设置字体以及如何设置systemFont,包括粗体和斜体。 但是,如果我想要使用斜体,我该如何设置带有名称的字体?

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

myLabel.font = [UIFont italicSystemFontOfSize:15];

我想要一个斜体格鲁吉亚,怎么样?

5 个答案:

答案 0 :(得分:6)

要以斜体显示,您需要执行以下操作:

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

或者:

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

要找出最适合使用的内容:

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

然后在调试器中打印它以查看哪些子类型可用。

要使用系统字体,请执行以下操作:

[UIFont boldSystemFontOfSize:SIZE];

[UIFont italicSystemFontOfSize:SIZE];

希望这会有所帮助:)

答案 1 :(得分:2)

你必须知道变体名称,例如“GeorgiaIT”或“GeorgiaItalic”。

答案 2 :(得分:2)

不要尝试使用字体名称。使用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];

source

使用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);

答案 3 :(得分:1)

这里的问题相同。我用这种方式解决了这个问题,这将产生(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;
        }
    }
}

答案 4 :(得分:0)

这里是Cœur在Swift中的回答:

ComboBox