2012-01-29 50 views
0

我知道如何使用fontWithName:設置字體以及如何設置粗體和斜體的systemFont。 但是,如果我想讓它成爲斜體,我該如何設置一個帶有名稱的字體?如何設置fontWithName和italic

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

myLabel.font = [UIFont italicSystemFontOfSize:15]; 

我想斜體格魯吉亞,怎麼樣?

+0

根據[評論](https://stackoverflow.com/questions/9052570/how-to-set-fontwithname-and-italic/369 74547#comment11373039_9052690),Lars實際上是要斜體和粗體。 – 2016-05-02 03:29:56

回答

2

您必須知道變體名稱,例如「GeorgiaIT」或「GeorgiaItalic」。

+0

我知道這真的很舊,但是http://iosfonts.com/會給你一個很好的可用字體及其變體名稱的概要。 – Andrew 2013-05-31 08:52:00

6

爲了得到它在斜體你需要做這樣的事情:

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

或者:

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

要找出你最好關閉使用:

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

然後在調試器中打印此信息以查看哪些子類型可用。

要使用系統字體有:

[UIFont boldSystemFontOfSize:SIZE]; 

和:

[UIFont italicSystemFontOfSize:SIZE]; 

希望這有助於:)

+2

謝謝,這有很大的幫助。我真正想要的是大膽和斜體,因此經過一些實驗喬治亞 - BoldItalic工作。 – 2012-01-30 10:16:38

+0

你應該接受答案,因爲它看起來對你有幫助 – 2012-01-30 15:15:28

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; 
     } 
    } 
} 
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); 
0

這裏心教堂在斯威夫特回答:

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