【问题标题】:Custom Fonts in Xcode 5Xcode 5 中的自定义字体
【发布时间】:2013-09-27 07:44:03
【问题描述】:

如何在 Xcode 5 中添加自定义字体以及如何将项目中的每个标签更改为该字体?因为我听说您只能以编程方式执行此操作?

【问题讨论】:

标签: iphone xcode fonts xcode5


【解决方案1】:

更好的选择是将新字体添加到您的系统/操作系统字体目录,然后可以从那里将其添加到情节提要中或与 NSAttributed 字符串一起使用。

步骤:

  1. 下载字体 .ttf 文件
  2. 转到情节提要中的任何标签/文本视图,然后在右上角的属性检查器中选择:“文本”,然后选择 >“属性”
  3. 点击字体名称旁边的小 T 图标打开字体编辑器
  4. 转到 cog/wheel/setting 图标并选择“管理字体”
  5. 单击右数第二个“+”按钮并导航到您的字体 .ttf 文件以添加到系统字体集合中
  6. 现在通过更改情节提要或代码中的字体名称来使用您的字体:)

希望有帮助!

【讨论】:

    【解决方案2】:

    您可以使用以下步骤在 Xcode 中创建自定义字体:

    1. 将字体类型导入您的项目(*.ttf 文件)
    2. “应用程序提供的字体”键添加到项目的 plist 中。
    3. 在“应用程序提供的字体”键中添加自定义字体作为项目数组。
    4. 现在,您可以将标签中的字体用作:

      [lblName setFont:[UIFont fontWithName:@“CustomFontName” size:14.0]];

    【讨论】:

      【解决方案3】:

      这里的答案很好,但我建议在您的自定义标签中设置尽可能少,并且绝对不要硬编码大小。您可以像这样轻松地做到这一点:

      #import "CustomFontLabel.h"
      
      @implementation CustomFontLabel
      
      - (id)initWithFrame:(CGRect)frame
      {
          self = [super initWithFrame:frame];
          if (self) {
              [self setFontStyle];
          }
          return self;
      }
      
      - (id)initWithCoder:(NSCoder *)aDecoder {
          self = [super initWithCoder:aDecoder];
      
          if (self) {
              [self setFontStyle];
          }
      
          return self;
      }
      
      - (void)setFontStyle {
          CGFloat fontSize = self.font.pointSize;
      
          [self setFont:[UIFont fontWithName:@"LindenHill" size:fontSize]];
      }
      
      @end
      

      这将尊重您在情节提要中设置的所有其他设置,从而更轻松地管理所有内容。

      【讨论】:

      • 上述解决方案效果很好。但是字体大小设置为 17,即使我已将 xib 中的 UILabel 的字体大小设置为 22。你能告诉我我是否遗漏了什么吗?因为我需要不同的字体大小。
      • 这太奇怪了,它应该尊重您设置的字体大小并且只覆盖字体......
      • 我可以解决将字体从系统更改为自定义的问题。感谢您的帮助
      【解决方案4】:

      您需要使用自定义字体以编程方式设置每个标签。

      使用自定义字体:

      1/ 在项目中添加自定义字体,例如资源(字体 .ttf 或 .otf)

      2/ 在你的 info.plist 中添加关键 UIAppFonts(应用程序提供的字体)和每个自定义字体的名称(例如:SohoGothicStd.ttf)

      3/ 你可以创建宏来使用你的字体

      #define FONT_SOHO_STD(s) [UIFont fontWithName:@"SohoGothicStd" size:s]
      

      4/ 将此宏用于标签示例:

      _myLabel.font = FONT_SOHO_STD(15.0f);
      

      【讨论】:

      • 很好 - 对于简单的情况,这个炒锅很容易使用。对于复杂的部分,您应该遵循子类方法。
      • 不要对字符串值使用define!它将为每个宏使用的地方复制它。你需要使用extern NSString* const myFontName
      • 使用const 你有一个对内存的引用。使用#define,您可以在编译开始之前替换您的宏。所以我更喜欢使用#define,对我来说它在你的代码中更具可读性。
      • 您不需要单独设置每个 UILabel。使用外观设置默认值,如下所示: [[UILabel 外观] setFont:[UIFont fontWithName:@"SohoGothicStd" size:15]];我仍然喜欢你的宏,因为它可以轻松设置不同的大小。
      • @meghaphone,在字体文件上只需 Cmd+I :) 无需遍历所有字体并找到需要的字体。
      【解决方案5】:

      我相信您需要使用[UILabel appearance] 代理为您的应用程序中的所有标签设置自定义字体。将以下行添加到您的 AppDelegate didFinishLaunchingWithOptions 函数中,为项目中的所有 UILabels 设置自定义字体。

      UIFont *newFont = [UIFont fontWithName:@"My-Custom-Font-Name" size:14];
      [[UILabel appearance] setFont:newFont];
      

      注意:您需要确保您的字体在您的 Xcode 项目中。

      您可以按照以下步骤将自定义字体添加到项目中。

      1. 使用Xcode 将自定义字体文件添加到项目中 资源
      2. 为您的Info.plist 文件添加一个名为UIAppFonts 的密钥。
      3. 将此键设为数组
      4. 对于您拥有的每种字体,输入您的字体文件的全名 (包括扩展名)作为 UIAppFonts 数组的项目
      5. 保存Info.plist

      步骤来自:Can I embed a custom font in an iPhone application?

      【讨论】:

      • 所以无法在情节提要中直观地看到您的自定义字体?
      • @zonabi 事实证明您在故事板中看不到自定义字体,您必须以编程方式添加它们。
      • 你能避免硬编码大小吗?
      【解决方案6】:

      是的,您需要通过代码来完成。我认为 XCode5 没有添加任何类似的新功能。 要以编程方式执行以下操作:

      然后创建一个作为 UILabel 子类的类 假设您有类似 Title 之类的东西,其字体大小为 14,带有 Helverica-Bold

      在 .h 文件中

      #import <UIKit/UIKit.h>
      
      @interface MyLabel : UILabel {
      
      }
      
      @end
      

      在 .m 文件中

          #import "MyLabel.h"
      
          @implementation MyLabel
      
          - (id)initWithCoder:(NSCoder *)coder {
          self = [super initWithCoder:coder];
          if (self) {
              self.font = [UIFont fontWithName:@"Helvetica-Bold" size:14];
          }
          return self;
      }
      
          @end
      

      另一个不使用单独子类的例子

      -(UILabel *) myTitleLabel {
          UILabel *label = [[UILabel alloc] init];
          label.backgroundColor=[UIColor clearColor];
          [label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:14]];
          label.textColor=[UIColor colorWithRed:(79.0 / 255.0) green:(79.0 / 255.0) blue:(79.0 / 255.0) alpha: 1];
          [label setTextAlignment:NSTextAlignmentLeft];
          [label sizeToFit];
          return label;
      }
      

      然后您可以使用 myTitleLabel 类创建一个对象,以便所有 titleLabel 对象具有相同的颜色和字体大小。

      【讨论】:

        猜你喜欢
        • 2014-02-03
        • 2012-05-19
        • 1970-01-01
        • 2012-03-14
        • 2015-10-03
        • 1970-01-01
        • 2015-11-10
        • 2013-10-21
        • 2012-06-11
        相关资源
        最近更新 更多