Xcode Playground 中的自定义字体

Posted

技术标签:

【中文标题】Xcode Playground 中的自定义字体【英文标题】:Custom fonts in Xcode playground 【发布时间】:2014-12-14 18:41:48 【问题描述】:

我正在用代码编写界面布局。因为每次我测试字体大小或逐像素查看布局时重新加载应用程序很烦人,所以我开始在操场上这样做。这确实有很大帮助。但我确实想念那里的自定义字体。

有没有办法在你的 Playground 中添加自定义字体?

【问题讨论】:

你有没有发现如何做到这一点? @Jan 希望你看到下面的答案... 【参考方案1】:

首先,将 .ttf 文件添加到 Playground 的资源中。然后你可以像这样加载字体:

let cfURL = NSBundle.mainBundle().URLForResource("Proxima Nova Semibold", withExtension: "ttf") as! CFURL

CTFontManagerRegisterFontsForURL(cfURL, CTFontManagerScope.Process, nil)

let font = UIFont(name: "ProximaNova-Semibold", size:  14.0)

.ttf 文件的文件名通常与字体的实际描述符名称不匹配,您需要 UIFont 名称。要找到它,请在 Mac 上的 Font Book 中打开 .ttf 文件,查看其详细信息,然后查找 PostScript 名称。这是要在 UIFont(name:...) 中查找的名称

或者,您可以在使用以下代码注册 URL 后查找已安装的字体:

var fontNames: [[AnyObject]] = []
for name in UIFont.familyNames() 
    println(name)
    if let nameString = name as? String
    
        fontNames.append(UIFont.fontNamesForFamilyName(nameString))
    

fontNames

【讨论】:

对于 swift3,使用: let fontURL = Bundle.main.url(forResource: "ProximaNova-Semibold", withExtension: "ttf") CTFontManagerRegisterFontsForURL(fontURL! as CFURL, CTFontManagerScope.process, nil) 【参考方案2】:

除了 Chris Garrett 回答,请查找 Swift 4 的代码:

let cfURL = Bundle.main.url(forResource: "SanaSansAlt-Black", withExtension: "otf")! as CFURL
CTFontManagerRegisterFontsForURL(cfURL, CTFontManagerScope.process, nil)
var fontNames: [[AnyObject]] = []
for name in UIFont.familyNames 
   print(name)
   fontNames.append(UIFont.fontNames(forFamilyName: name) as [AnyObject])

【讨论】:

以上是关于Xcode Playground 中的自定义字体的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Xcode 工作区中生成的框架中的自定义字体

使用情节提要的自定义字体 Xcode 4.6

iOS本地化在Xcode中不适用于Objective-C中的自定义标签[关闭]

未安装自定义字体 - Xcode 11 beta

Interface Builder 中的自定义字体

iPhone中的自定义字体