【问题标题】:Custom fonts in Interface BuilderInterface Builder 中的自定义字体
【发布时间】:2014-03-28 23:05:31
【问题描述】:

现在是 2014 年,有没有办法在 Interface Builder 中设置自定义字体?即不要以编程方式进行,除了应用程序列表中的“应用程序提供的字体”。

【问题讨论】:

标签: ios fonts interface-builder


【解决方案1】:

是的,马里乌斯是对的。在 Xcode 6 中,您无需使用额外的软件,也无需在代码文件中设置字体。只需将字体文件与其他文件一起添加到项目中即可。并且界面生成器将在自定义字体列表中显示添加的字体。

最令人惊奇的是,xcode 6 会立即在 IB 中显示应用的字体。这是 Apple 的一大亮点。

还要确保在项目的 info.plist 中添加此键“应用程序提供的字体”,并提供字体文件名以查看设备中的效果。

【讨论】:

  • 是的,但是由于某种原因,在将字体添加到项目并在界面生成器中设置标签的字体后 - 字体不会显示在设备上。不过在 IB 中看起来还不错..
  • 你是对的。你应该做的还有一件事。在项目的 Info.plist 中,您必须添加此键“应用程序提供的字体”。并提供您的字体文件名。这对设备有用。这是应用程序知道这些字体应该包含在应用程序包中的方式。
  • 但前提是它不是属性字符串。至少没有 FontAwesome 和 Open Sans。
  • 哇。在 XCode 出现在 iOS 上超过 6 年之后,Apple 的“伟大的补充”......对不起,我喜欢 XCode,但这在很长一段时间内只是不必要的折磨。而且它仍然不能与属性字符串一起工作的事实是荒谬的。
  • 但它确实不可靠。我在我的项目中添加了 Open Sans 字体,并在 info.plist 文件中添加了条目。字体仍然显示在一个 xib 的自定义字体列表中,但不显示其他字体。
【解决方案2】:

在 Xcode 6 中,我们在界面生成器中提供了自定义字体。

无需额外的软件。谢谢苹果!

【讨论】:

  • 是的,但是由于某种原因,在将字体添加到项目并在界面生成器中设置标签的字体后 - 字体不会显示在设备上。不过在 IB 中看起来还不错..
  • @NimaGardideh,属性文本不就是这种情况吗?我也一样。
  • 我记得它也不适用于属性文本。不过,我认为这个问题在后来的一个测试版中得到了解决。
  • 但它确实不可靠。我在我的项目中添加了 Open Sans 字体,并在 info.plist 文件中添加了条目。字体仍然显示在一个 xib 的自定义字体列表中,但不显示其他字体。
【解决方案3】:

在 Xcode 6 中,只需在您的项目中添加 ttf 文件并通过自定义字体在情节提要中使用它。 如果您直接想在代码中使用它而不在情节提要中使用它,那么您必须在 projectName-Info.plist 中添加键“UIAppFonts”。

例子:

<key>UIAppFonts</key> 
<array>
    <string>Signika-Bold.ttf</string>
    <string>Signika-Regular.ttf</string>
    <string>Signika-Light.ttf</string>
    <string>Signika-Semibold.ttf</string>
</array> 

就在 projectName-Info.plist 中的 &lt;/dict&gt; 行之前。

UIFont* font  = [UIFont fontWithName:@"Signika-Regular" size:25];

【讨论】:

  • 太忙了,无法用 IBOutlet 附加每个标签,然后手动更改其字体。
  • 我花了很多时间弄清楚为什么我不能以编程方式设置字体。不,我看到了答案!
【解决方案4】:

看起来有人在研究它。你可以看看MoarFonts

MoarFonts

直接在 Interface Builder 中为您的 iOS 项目使用自定义字体,所见即所得的方式

Cédric Luthi “0xced

花费 10 美元,但是:

从 iOS 3.2 开始,您可以在 iOS 应用程序中使用自定义字体,方法是添加 UIAppFonts Info.plist 键。不幸的是,自定义字体不是 在 Interface Builder 中编辑 xib 文件时可用。 MoarFonts 让您的自定义字体直接在 Interface Builder 中可用。

MoarFonts 与 Xcode 4 和 Xcode 5 兼容。

【讨论】:

  • 好吧,为什么不...我认为这次我不会使用它...但也许这可以暗示 Apple 雇用这些人 ;-)
  • 或者至少告诉他们我们需要这个功能! :D
【解决方案5】:

这是我的解决方案,没有其他对我有用

#import "UILabelEx.h"
#import "Constants.h"

@implementation UILabelEx

//- (void)layoutSubviews
//{
//    [super layoutSubviews];
//    // Implement font logic depending on screen size
//    self.font = [UIFont fontWithName:@"CustomFont" size:self.font.pointSize];
//}

- (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
    [super traitCollectionDidChange: previousTraitCollection];

    self.font = [UIFont fontWithName:APP_FONT size:self.font.pointSize];
}
@end

【讨论】:

  • 疯了,这也是唯一对我有用的东西。我的自定义字体可以从代码中访问就好了。在界面生成器中,它们出现在字体菜单中并且可以选择。它们在界面生成器中正确呈现。但是当实际在模拟器中运行时,它是 Helvetica-city。
  • 我认为这在 Xcode 8 中已修复,但我没有删除我的代码。
猜你喜欢
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2013-02-22
相关资源
最近更新 更多