通过将文本设置为 UIButton 将按钮字体重置为默认值

By setting text to UIButton resets button font to default

提问人:AVR 提问时间:11/29/2021 更新时间:11/29/2021 访问量:273

问:

在我的代码中,我创建了一个自定义按钮(即 UIButton 的子类),但我无法为按钮设置字体。已经观察到,如果我使用它,它可以正常工作,但是每当我使用方法字体时,都会重置为系统字体。我需要该字体来表示按钮的所有状态,因此我必须使用该功能。我的自定义按钮代码如下self.titleLabel?.text = titleself.setTitle(title, for: .normal)setTitle

class RoundedButton: UIButton {
    override init(frame: CGRect) {
        super.init(frame: frame)
        styleButton()
    }
    
    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        styleButton()
    }

    func styleButton(title: String = "button", font: UIFont = .customFont16) {
        self.setTitle(title, for: .normal)
        self.backgroundColor = UIColor.yellow
        titleLabel?.font = font
    }
}
iOS Swift Objective-C UIBuButton UIKit的

评论

1赞 Nick Kim 11/29/2021
您是否尝试过使用指定标题的字体?developer.apple.com/documentation/uikit/uibutton/......NSAttributedString

答:

0赞 Darshan 11/29/2021 #1

您可以添加一个变量来设置自定义类中的字体。然后从 viewController 设置字体。

var titleFont: UIFont = UIFont.preferredFont(forTextStyle: .footnote) {
    didSet {
        titleLabel?.font = titleFont
    }
}

将上述代码添加到您的自定义类中,并在 viewController 中访问它,如下所示。

@IBOutlet weak var roundButton: RoundedButton!


override func viewDidLoad() {
    super.viewDidLoad()
    roundButton.titleFont = .caption1
}