设置自定义按钮字体,而不会被故事板中设置的值覆盖

时间:2014-12-03 10:54:09

标签: ios objective-c xcode fonts xcode6.1

我有一个自定义按钮,AdvisorButton.h,在init中我设置了按钮的字体,但我相信它们被按钮的故事板设置覆盖。

继承实施:

-(id)initWithFrame:(CGRect)frame
{
    if ((self = [super initWithFrame:frame]))
    {
        [self initializationCodeMethod];
    }
    return self;
}

-(id)initWithCoder:(NSCoder *)aDecoder
{
    if ((self = [super initWithCoder:aDecoder]))
    {
        [self initializationCodeMethod];
    }
    return self;
}

-(id)initializationCodeMethod
{

    if(self.tag == 1)
    {
        UIFont *theFont = [UIFont fontWithName:@"DINOT-Light" size:20];
        [self.titleLabel setFont:theFont];
    }
    else
    {
        UIFont *theFont = [UIFont fontWithName:@"VWHeadlineOT-Book" size:20];
        [self.titleLabel setFont:theFont];
    }
    return self;
}

字体对象已正确初始化,如果我打印出有值等等。

问题是它们是在故事板中定义的,我想避免在视图控制器中引用每个按钮/标签/文本字段来设置字体。

我认为故事板值是在init函数调用之后设置的吗?

对这个问题的任何见解都会有用!

编辑: 请注意,我在尝试设置之前检查了字体,并将其设置为故事板中的默认字体,这很好。

然后我会在它被设置之后再次检查它并且它仍然完全相同。

4 个答案:

答案 0 :(得分:1)

确保在身份检查器部分为故事板Refer the image中的相应按钮类添加了自定义按钮类名称

还尝试在

中设置字体
- (void)drawRect:(CGRect)rect
{
    if ((self = [super initWithCoder:aDecoder]))
    {
        [self initializationCodeMethod];
    }
    return self;
}

在您的自定义按钮类

答案 1 :(得分:0)

<强>解决

故事板上对象的文本不是系统默认设置,而是故事板设置会覆盖任何更改。

我个人认为文字有下划线等,而且没有更新。

我删除了属性,但保留了默认值以外的其他字体,但无法替换字体。

因此我将其设置为默认值,然后允许我替换字体。

答案 2 :(得分:0)

NSAttributedString包含一个或多个字体本身。如果要更改字体,则必须使用所需字体重新创建NSAttributedString或删除它并直接使用UILabel.text。在这种情况下,UILabel.font将生效。

作为副作用,您可以创建没有任何字体集的属性字符串,在这种情况下,UILabel.font可能会生效。我注意到UIColor.textColor的这种行为。

答案 3 :(得分:0)

您是否已将字体添加到info.plist中: “应用程序提供的字体” - 第0项 - yourfontname.OTF

故事板不需要这个,但是当我尝试以编程方式更改字体时,我需要它。