使用Interface Builder设置UILabel的字体来自Helvetica

时间:2010-08-05 21:32:47

标签: iphone ipad fonts interface-builder

我在使用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文件来提供不同的布局,所以我不能硬编码总是使用相同的字体家庭。每次出现它的子类化都会是一个巨大的痛苦,特别是因为我想让设计师随时随地创建和更改所有布局和界面构建器,如果他们每次都要告诉我他们想要什么字体,那么我可以硬编码每个特定情况,这将非常尴尬。

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

提前致谢, 菲利普

7 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

您只能使用iPhone OS上的字体。 请检查this answer,了解如何在您的应用中嵌入自定义字体。

答案 2 :(得分:2)

如果您不想创建任何IBOutlet,请查看此帖子。

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

答案 3 :(得分:1)

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

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

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

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

在iOS6和iOS7上测试。

答案 4 :(得分:0)

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

HIH

答案 5 :(得分:0)

如果您使用子类化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];
    }
}

答案 6 :(得分:0)

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

https://github.com/IntrepidPursuits/IPCustomFontLabel