【发布时间】:2014-12-14 18:41:48
【问题描述】:
我正在用代码编写界面布局。因为每次我测试字体大小或逐像素查看布局时重新加载应用程序很烦人,所以我开始在操场上这样做。这确实有很大帮助。但我确实想念那里的自定义字体。
有没有办法在你的 Playground 中添加自定义字体?
【问题讨论】:
-
你有没有发现如何做到这一点?
-
@Jan 希望你看到下面的答案...
我正在用代码编写界面布局。因为每次我测试字体大小或逐像素查看布局时重新加载应用程序很烦人,所以我开始在操场上这样做。这确实有很大帮助。但我确实想念那里的自定义字体。
有没有办法在你的 Playground 中添加自定义字体?
【问题讨论】:
首先,将 .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
【讨论】:
除了 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])
}
【讨论】: