【问题标题】:Set a custom buttons font without being overridden by the value set in the storyboard设置自定义按钮字体而不被情节提要中设置的值覆盖
【发布时间】:2014-12-03 10:54:08
【问题描述】:

我有一个自定义按钮 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 函数调用之后设置的吗?

对这个问题的任何见解都会被证明是有用的!

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

然后我在它应该设置后再次检查它,它仍然完全相同。

【问题讨论】:

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


    【解决方案1】:

    确保您已在身份检查器部分为storyboard中的相应按钮类添加了自定义按钮类名称

    也可以尝试在

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

    在您的自定义按钮类中

    【讨论】:

    • 我有它的 AdvisorButton 类。
    • 重新分配self 并在每个drawRect 上重新创建它?对我来说,这听起来是个坏主意。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        已解决

        事实证明,情节提要上对象的文本不是系统默认值,任何更改都会被情节提要设置覆盖。

        我个人将带有下划线等的文本归因于它并没有更新。

        我删除了属性,但留下了默认以外的另一种字体,并且无法替换该字体。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-20
          • 2016-05-26
          相关资源
          最近更新 更多