2010-10-01 146 views
16

如何使用自定义字体获取UIFont对象?我记得Info.plist文件中还存在一些问题。如何将自定义字体添加到iPhone应用程序?

支持哪些字体文件格式?

+4

可能重复的[我可以在iPhone应用程序中嵌入自定义字体?](http://stackoverflow.com/questions/360751/can-i-embed-a-custom-font-in-an-iphone-应用程序) – 2010-10-01 14:14:48

+0

有用的教程:http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/ – Suragch 2015-02-25 05:59:03

回答

52

要将自定义字体添加到应用程序中,可以将它们添加到XCode项目。然后,修改application-info.plist文件。将“应用程序提供的字体”键添加到新行。为您添加的每种字体添加一个项目。

它支持TTF和OpenType两种字体。需要注意的是,它会在您的应用程序启动时加载并解析所有字体,因此会减慢初始加载时间。

我相信这只适用于iOS 3.2或更高版本。

+1

我添加到Info.plist的内容是什么?完整的文件名或? – esbenr 2011-11-09 07:30:05

+0

是的,完整的文件名。 – 2012-07-13 21:24:25

+1

yourprojectname-Info.plist是完整的文件名。 – ArnoHlaMoe 2013-01-11 12:27:24

9

最佳链路初学者
如何添加自定义字体在您的项目Link

2

编程方式(SWIFT)

添加字体到您的项目在资源文件夹
并添加此功能:

func loadFont(filePath: String) { 

    let fontData = NSData(contentsOfFile: filePath)! 

    let dataProvider = CGDataProviderCreateWithCFData(fontData) 
    let cgFont = CGFontCreateWithDataProvider(dataProvider)! 

    var error: Unmanaged<CFError>? 
    if !CTFontManagerRegisterGraphicsFont(cgFont, &error) { 
     let errorDescription: CFStringRef = CFErrorCopyDescription(error!.takeUnretainedValue()) 
     print("Unable to load font: %@", errorDescription) 
    } 

} 

使用例如:

if let fontPath = NSBundle.mainBundle().pathForResource("MyCustomFont", ofType:"ttf"){ 
    loadFont(fontPath) 
} 

... 
... 
let myFont = UIFont(name: "MyCustomFont",size: CGFloat(18)) 
+0

这很棒,似乎可以提高启动时间。谢谢! – chrilith 2016-07-12 09:02:39

相关问题