15

在当前使用 iOS 7 时,我试图增加 UIButton 的 titleLabel 的字体大小。我正在这样做,

[[_centerButton titleLabel] setFont:[UIFont boldSystemFontOfSize:28.0]];

然而,这并没有做任何事情。每次我用不同的大小编译时,字体总是保持不变。即使我完全删除该行,字体也保持不变。显然它坚持默认大小。

如何增加 UIButton 标题的字体大小?

4

7 回答 7

28

使用Xcode 13时,我必须将Style属性从更改PlainDefaulton Interface Builder

在此处输入图像描述

然后在设置标题之后,我终于可以毫无问题地以编程方式更改字体:

button.setTitle("The title", for: .normal)
button.titleLabel?.font = UIFont(name: "Montserrat-SemiBold", size: 15)
于 2021-11-03T17:38:43.980 回答
15

在https://developer.apple.com/library/ios/documentation/uikit/reference/UIButton_Class/UIButton/UIButton.html#//apple_ref/occ/instp/UIButton/titleLabel上查看官方 UIButton 类参考

它说您实际上可以使用您的方法设置字体:

button.titleLabel.font = [UIFont systemFontOfSize: 12];
于 2013-10-12T23:06:12.960 回答
2

Well I had the same problem, have you used interface builder? after I set the title property to Plain, it's working, very very weird.

于 2014-09-30T22:30:17.470 回答
2

你在使用故事板吗?如果是这样,当您单击 UIButton 时,您可以在属性检查器中看到一个名为 Font 的属性。默认情况下,它显示为“自定义”(显示为空白)。单击 T 符号并选择系统。然后你可以选择字体大小。

点击 T 符号

选择系统,现在可以设置大小

希望能帮助到你。

于 2013-12-13T18:05:12.120 回答
1

有点晚了……titleLabel 的一些属性在 setTitle() 之后被重置。关联

于 2014-01-03T10:37:36.677 回答
0

如果您尝试使用UIButton.configurationiOS 15 中的新功能执行此操作,则更改titlelabel?.font将不起作用,因为该configuration字段将使用系统样式覆盖它,因为您现在需要设置configuration?.title = "some title".

您需要创建一个AttributedString并设置configuration?.attributedTitle = yourAttributedString

我的整个应用程序是程序化的,所以这里是我创建的自定义按钮“红色药丸”样式按钮的示例,它使用方便的 init 动态设置按钮标题。

class APButton: UIButton {

    override init(frame: CGRect) {
        super.init(frame: frame)
        configure()
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    convenience init(title: String) {
        self.init(frame: .zero)
        setDynamicTitle(title: title)
    }
    
    private func configure() {
        configuration = .filled()
        configuration?.cornerStyle = .capsule
        configuration?.baseBackgroundColor = .red
        configuration?.baseForegroundColor = .white

        translatesAutoresizingMaskIntoConstraints = false
    }
    
    private func setDynamicTitle(title: String) {
        let font = UIFont.systemFont(ofSize: 20)
        let container = AttributeContainer([NSAttributedString.Key.font: font])
        let attribString = AttributedString(title, attributes: container)
        
        configuration?.attributedTitle = attribString
    }

}
于 2021-12-24T06:53:41.680 回答
-2

在你的情况下,问题在于你没有设置UIControlStateNormalwhich 应该得到特定的fontSize.

我通常创建一个 type 类UIButton并设置fontSizeinside awakeFromNib看看这个帖子。

于 2013-10-12T23:09:45.960 回答