【问题标题】:UIButton.titlelabel setfont doesn't workUIButton.titlelabel setfont 不起作用
【发布时间】:2013-08-29 08:15:57
【问题描述】:

我在界面生成器中添加了按钮并引用了它们,然后我想更改它们的标题字体,但它不起作用。 当我使用时:

[_button setFont:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:24.0f]];

它可以工作,但此代码已被贬值。所以我在网上看了看用什么代替这段代码,我发现这段代码可以使用:

[_button.titleLabel setFont:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:24.0f]];
_button.titleLabel.font = [UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:24.0f];

但这项工作都没有。我不知道该怎么办或有什么问题。我尝试设置 UIButton 的全局外观,这也可以,但我无法使用它,因为我只需要在某些按钮上使用该字体。

按钮如下:

@property (nonatomic, weak) IBOutlet UIButton *button;

并添加到情节提要中。

字体已定义:

#define APP_FONT_FUTURASTD_LIGHT @"FuturaStd-Light"

并添加到 Info.plist 部分“应用程序提供的字体”。

【问题讨论】:

  • 这个答案似乎表明您的替代代码应该可以正常工作:stackoverflow.com/questions/4206848/setfont-deprecated
  • 我看到了这个问题,试过了,但它什么也没做。它不显示警告/错误,也不改变字体。这就是为什么我很困惑。
  • OK 接下来要检查的是按钮或字体的nil...
  • 这也没关系,按钮和字体都是它们应该是的,NSLog 会显示它们,当我更改其他内容时它会起作用。顺便说一句,我用这个来设置按钮,可以吗? @property (nonatomic, weak) IBOutlet UIButton *button;
  • 是的,在我看来没问题。不知道这里出了什么问题。

标签: iphone ios


【解决方案1】:

我发现了问题所在。另一个启动这个项目的程序员已经设置了

[[UIButton appearance] setFont:[UIFont fontWithName:APP_FONT_FUTURASTD_BOLD size:12.0f]];

在 CSAppDelegate.m 中,所以我的所有自定义都被它覆盖了。

因此,对于像这样全局配置按钮字体的任何人,您将无法以不同方式自定义某些按钮的字体。 第二个建议是,如果您在其他人之后继续工作,请确保他们给您一些技术文档或向您解释他们是如何以及在哪里做的。

编辑

但是,您可以在 viewWillAppear 中为一个视图设置外观,然后在视图的 viewDidAppear 中将其设置回您在 ​​CSAppDelegate.m 中的外观。

编辑

现在此代码已被贬值,因此您必须改用此代码:

[[[UIButton appearance] titleLabel] setFont:UIFont];

【讨论】:

  • 现在已弃用,有什么新方法可以做到这一点?
  • 这是新的工作方式,[[[UIButton appearance] titleLabel] setFont:UIFont];
【解决方案2】:

在我看来问题是字体名称。您在代码中使用的字体名称不是确切的名称。

您可以使用以下代码获取您的应用支持的所有字体名称列表

  // List all fonts on iPhone

for (NSString* family in [UIFont familyNames])
{
    NSLog(@"%@", family);

    for (NSString* name in [UIFont fontNamesForFamilyName: family])
    {
        NSLog(@"  %@", name);
    }
}

从 xcode 的控制台中,您可以找到您在应用程序中添加的字体的确切名称

【讨论】:

  • 我已经写过字体没问题。我已经创建了这个问题的答案。问题出在全局 UIButton 外观上,您可以在我的回答中阅读。不过还是谢谢你的回答,你写的这段代码以后可能会派上用场。
【解决方案3】:

如果您与 Xib 一起使用,请删除 AutoLayout 复选标记。它将正常工作。 我认为它对你有帮助。

【讨论】:

  • 我使用storyboard,AutoLayout没有勾选。
  • 即使存在自动布局,按钮也应该采用字体。
  • 自动布局与按钮上的字体有什么关系?
  • 我之前在 Uitextfields 中也遇到过同样的问题。我已经使用 Remove Autolayout 解决了这个问题。所以我就这样给出了。
猜你喜欢
  • 1970-01-01
  • 2011-05-11
  • 2019-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多