【问题标题】:Setting font of UILabel with Interface Builder comes out Helvetica用 Interface Builder 设置 UILabel 字体出来 Helvetica
【发布时间】:2011-03-26 01:31:12
【问题描述】:

我在使用 Interface Builder 为 UILabels 和 UITextViews 设置字体时遇到问题。 我正在尝试将字体设置为 Gill Sans。 如果我以编程方式设置它,它可以正常工作,如下所示:

    myLabel.font = [UIFont fontWithName:@"Gill Sans" size:24.0];

但是,如果我尝试使用 Interface Builder 进行设置,我会得到与此问题中描述的相同的行为iPhone SDK: Interface Builder label font, only shows when editing label,但 Gill Sans 据说可以在 iPad 上使用(它是,因为如果我设置它,它可以工作代码)。如果我运行它并这样做:

    NSLog(@"%@", myLabel.font.fontName);

它打印出“Helvetica”。

通常我不介意以编程方式设置它,但问题是这个特定的类在几个不同的地方使用不同的 nib 文件来提供不同的布局,所以我不能硬编码它总是使用相同的字体家庭。并且每次出现时对其进行子类化将是一个巨大的痛苦,特别是因为我想让设计人员能够随时使用界面构建器创建和更改所有布局,如果他们每次都必须告诉我他们想要什么字体,所以我可以硬编码每个特定的情况,那会很尴尬。

以前有人遇到过这个问题吗? 即使 xib 文件的目标已经设置为 iPad,Interface Builder 也可能限制我使用 iPhone 字体,但我如何说服它我的目标是 iPad?

提前致谢, 菲利普

【问题讨论】:

    标签: iphone ipad fonts interface-builder


    【解决方案1】:

    好的,显然这已被报告为 IB 3.2.3 的错误:
    https://devforums.apple.com/message/236134#236134
    这家伙说它曾经在 3.2.2 上工作过,所以我看看我是否可以降级,或者我就等苹果的修复。

    【讨论】:

      【解决方案2】:

      您只能使用 iPhone 操作系统上存在的字体。 查看this answer,了解在您的应用中嵌入自定义字体的方法。

      【讨论】:

      • 是的,我明白这一点,但我认为 Gill Sans 字体存在于 iPhone OS 3.2 上,不是吗?我的意思是,如果我通过代码设置字体,它就可以正常工作。问题是使用 Interface Builder 进行设置。
      【解决方案3】:

      如果您不想创建任何 IBOutlet,请查看这篇文章。

      https://stackoverflow.com/a/6620938/400909

      【讨论】:

        【解决方案4】:

        查看我写的 IBCustomFonts 类别: https://github.com/deni2s/IBCustomFonts

        IBCustomFonts 类别允许您在构建 iOS 应用程序时使用来自 Interface Builder (IB) 的自定义字体。

        使用 IBCustomFonts 类别的应用已获得 Apple App Store 的批准(截至 2013 年 9 月)。

        无需使用 IBOutlets、UILabels 和 UIButtons 的子类化或更改代码中的字体。

        在 iOS6 和 iOS7 上测试。

        【讨论】:

          【解决方案5】:

          清理所有目标几次。我不得不退出 IB 和 xcode 才能在最后一个实例中获取字体。我使用的是 xcode/IB 3.2.5,我使用的是 chalkduster 13pt

          【讨论】:

          • 很棒的东西。谢谢!
          【解决方案6】:

          如果您使用子类化 UILabel 方法并且还想保持在 IB 中设置的权重,那么使用可以执行以下操作。我找不到更好的方法来确定现有字体是粗体、斜体还是常规字体

          - (void)awakeFromNib
          {
              [super awakeFromNib];
          
              NSString *weight = [self.font.fontName substringFromIndex:[self.font.fontName length] - 5];
              if ( [weight isEqualToString:@"-Bold"] )
              {
                  self.font = [UIFont fontWithName:@"MyriadWebPro-Bold" size:self.font.pointSize];
              }
              else if ( [weight isEqualToString:@"-Italic"] )
              {
                  self.font = [UIFont fontWithName:@"MyriadWebPro-Italic" size:self.font.pointSize];
              }
              else
              {
                  self.font = [UIFont fontWithName:@"MyriadWebPro" size:self.font.pointSize];
              }
          }
          

          【讨论】:

            【解决方案7】:

            我创建了一个 UILabel 子类,它允许您在界面生成器中设置自定义字体:

            https://github.com/IntrepidPursuits/IPCustomFontLabel

            【讨论】:

              猜你喜欢
              • 2014-01-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-10-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多