如何动态地读取和更改UILabel的字体大小?

4

我在动态更改UILabel字体大小方面遇到了问题。我的应用程序中有两个标签:

  1. 第一个标签的大小为90*59
  2. 第二个标签的大小为59*59

现在的问题是,第一个标签的字体大小可能会在运行时变化。我必须根据第一个标签的字体大小来更改第二个标签的字体大小。

我已经尝试了以下方法,但它不起作用:

    CGFloat secondLabelsize = firstLabel.font.pointSize;
    [seconLabel setFont: [UIFont fontWithName: @"Exo-Light" size:secondLabelsize]];

    viewDidLod
    {
    [hr_lbl setFont: [UIFont fontWithName: @"Exo-Light" size:55]];
    }

每次我只得到标签大小为55。请建议我如何获取当前字体大小(第一个标签),而不是在viewdidload中定义的字体大小。


嗯,始终保持55是正常的。您正在获取第一个字体的大小并将其设置为第二个字体的大小。难道不应该增加它吗?虽然我不确定我完全理解您的问题。请给我们更多细节,以便我们能够为您提供更好的答案。您的代码在我看来是正确的。 - George
2个回答

5

以下是答案:

label2.frame.size.width == label1.frame.size.width;

注意:如果我使用单个“=”,会出现错误。如果我使用“==”,它会给出警告,但也会给出预期的输出。真的很困惑那里发生了什么。请有人指导我理解这个问题。


2
  1. "Exo-Light"字体不能设置为55。这是一个字体问题。尝试使用标准的"Helvetica"字体以确保代码可以正常工作,然后找到一种更接近你的Exo-Light字体(当然要能正确显示)。

  2. 还要确保xib中的标签已经正确连接。


@"Exo-Light"字体无法设置为55。这是一个字体问题,如果是真的,你应该成为总统。干得好。 - George
嗨,乔治,第一个标签在运行时可能需要显示最多10个字符。但第二个标签只有两个字符。在显示10个字符的同时,第一个标签的字体大小应该减小(我认为)。现在我需要减小第二个标签的字体大小。但是我用这段代码无法做到。 - Veera Raj
嗨Teoder,我已经按照你的建议尝试了那种字体。但是它返回了相同的结果。pointSize仅返回预定义的大小... - Veera Raj
哎呀,这不可能啊,pointSize 不是只读的,如果你能读取它,那么你也应该可以设置它。检查一下你的 xib 文件,确保 outlet 已经连接到标签上了。或者尝试使用其他字体名称。否则,我也不知道怎么办了。 - John Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接