在iOS

时间:2015-12-01 11:40:58

标签: ios swift uifont

我在这里搜索了这个问题的答案,但我找不到任何可以用来回答问题的帖子。我只找到了关于将字体预先安装到应用程序的plist的答案,该应用程序对我来说不起作用。

我要做的是从网址下载字体,将文件本地存储到应用中,然后在控件中安装或使用该字体。

我正在将字体安装到平板电脑上以供使用。我可以使用下面的代码将它添加到CTFontManager而不会出现任何问题。

private func InstallFont(dest:String)
{
    let fontData = NSData(contentsOfFile: dest)!

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

    var error: Unmanaged<CFError>?
    if !CTFontManagerRegisterGraphicsFont(cgFont, &error)
    {
        print("Error loading Font!")
    }
}

我面临的问题是我似乎无法找到我在应用程序中的任何位置安装的字体,我试图将其设置为如下所示,但只是默认情况下告诉我无法找到它。

self.font = UIFont(name: "Font Name", size: 20.0)

我还浏览了字体系列,看它是否已经安装,也没有成功。

for x in UIFont.familyNames()
{
    print(x)

    for z in UIFont.fontNamesForFamilyName(x)
    {
        print("== \(z)")
    }
}

我想要实现的是什么?如果是这样,我做错了什么?

2 个答案:

答案 0 :(得分:3)

有可能。我在github中创建了一个示例项目。你必须在下面添加一行。

if !CTFontManagerRegisterGraphicsFont(cgFont, &error)
{
    print("Error loading Font!")
}
else
{
    let fontName = CGFontCopyPostScriptName(cgFont)
    uiFont = UIFont(name: String(fontName) , size: 30)
}

感谢Michael Dautermann,他是对的。

Github project link

enter image description here

答案 1 :(得分:1)

根据答案in this related question,你应该能够下载你的字体并按照你已经做的方式注册它(听起来你做的正确),但你只需要获得Postscript名称并使用它来创建相应的"ffmpeg.exe" -y -i "first.wav" -i "second.wav" -filter_complex "[1:a][1:a][1:a]concat=n=3:v=0:a=1,asetpts=PTS-STARTPTS[replaceBase];[replaceBase]asplit=2 [replaceA][replaceB];[0:a]atrim=0:3,asetpts=PTS-STARTPTS[partA];[replaceA]atrim=0:2,asetpts=PTS-STARTPTS[replaceTrimmedA];[0:a]atrim=5:6,asetpts=PTS-STARTPTS[partB];[replaceB]atrim=0:2,asetpts=PTS-STARTPTS[replaceTrimmedB];[0:a]atrim=start=8,asetpts=PTS-STARTPTS[partC];[partA][replaceTrimmedA][partB][replaceTrimmedB][PartC]concat=n=4:v=0:a=1[aout]" -map "[aout]" Out.wav

UIFont