iOS 7中的自定义字体

Jos*_*ría 102 iphone fonts ios

我正在开发游戏,我想在我的应用程序中使用自定义字体.我正在使用SpriteKit,如果这很重要的话.我已经尝试过使用这个https://github.com/deni2s/IBCustomFonts但我无法使用这个字体http://www.fontspace.com/freaky-fonts/emulogic

我尝试了各种各样的东西,并且我在应用程序的info.plist上注册了字体...有谁知道发生了什么?

jov*_*vic 277

首先,我假设SpriteKit没有任何区别.

  1. 您需要将.otf或.ttf中的字体复制到项目中.例如,在支持文件中.
  2. 您需要编辑.plist文件.将"由应用程序提供的字体"键添加到您的plist中,并在第0项中复制您复制到支持文件WITH扩展名的字体的确切文件名.例如:"JosefinSansStd-Light_0.otf"
  3. 确保导入应用程序的字体正在打包到应用程序本身.选择Target,然后选择Build Phases,然后复制Bundle Resources.如果您没有在其中看到您的字体,请将其从支持文件中拖出.

最后,您希望在应用程序启动时列出所有字体,只是为了查看字体的可用名称.你将用这一小段代码做到这一点:

NSArray *fontFamilies = [UIFont familyNames];
for (int i = 0; i < [fontFamilies count]; i++)
{
    NSString *fontFamily = [fontFamilies objectAtIndex:i];
    NSArray *fontNames = [UIFont fontNamesForFamilyName:[fontFamilies objectAtIndex:i]];
    NSLog (@"%@: %@", fontFamily, fontNames);
}
Run Code Online (Sandbox Code Playgroud)

在打印结果中搜索您的字体,例如,我会搜索"Josefin",我会看到实际的字体名称是"JosefinSansStd-Light".之后,您只需要使用该字体:

UIFont *customFont = [UIFont fontWithName:@"JosefinSansStd-Light" size:20];
Run Code Online (Sandbox Code Playgroud)

在iOS8中,您可以将字体直接添加到项目中,并且它们在界面构建器中可见.修改您的代码以解决此问题,但以编程方式设置iOS7的字体并在xCode6界面构建器中选择它.PS.xCode6中的界面构建器为您提供了正确的字体名称,您可以将其复制粘贴到下面的代码中.

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

 if(SYSTEM_VERSION_LESS_THAN(@"8.0"))
    {
        UIFont *customFont = [UIFont fontWithName:@"OpenSans-Light" size:32];
        self.registerLabel.font = customFont;  
    }
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助,欢呼.


zag*_*ago 24

使用自定义字体没问题,我做到了.跟着这些步骤:

  1. 在info.plist中注册字体,添加"应用程序提供的字体"条目.放置字体文件名,而不是字体名称.像font.ttf(我想你已经这样做了)
  2. 转到项目导航器上的项目,单击项目名称并转到"构建阶段",然后向下看"复制捆绑资源"转到底部,有很多文件并搜索"+"符号.弹出窗口将打开您的项目文件.搜索您的字体文件并将其添加到捆绑包中.
  3. 最后检查字体名称.在代码中使用它时,必须使用字体名称,而不是文件名.要知道字体名称,请在Finder中双击字体文件,将打开一个显示字体的窗口.检查窗口标题,这是您必须使用的字体的名称.

和建议,在.Prefix.pch文件中将该名称添加为宏.如果必须多次使用该字体,在项目中使用它会更容易.

我认为您遇到的问题是您正确注册了字体,但未将其复制到应用程序包中.因此,当应用程序执行时,它找不到字体.这就是为什么第2步很重要.我花了很多时间试图在第一时间弄清楚:)

  • 对我来说,关键是字体的标题.谢谢! (2认同)

Toy*_*oye 20

要迅速实现这一目标

如果您想在应用程序启动时列出所有字体,只是为了查看字体的可用名称.你可以用这一小段代码做到这一点:

    UIFont.familyNames.forEach {
        print("fontFamily: \($0), fonts: \(UIFont.fontNames(forFamilyName: $0))")
    }
Run Code Online (Sandbox Code Playgroud)


Stu*_*ark 5

多次尝试过,我从来没有能够得到这些答案.唯一的方法是我有一个自定义字体,以遵循接受的答案中的说明然后在故事板中创建一个使用该字体的隐藏标签.我可以以编程方式使用该字体.我知道奇怪和hacky,但它对我有用.