我试图改变按钮本身的字体大小后,它被按下。
class ViewController: UIViewController {
@IBOutlet weak var buttonToResize: UIButton!
@IBAction func buttonTapped(_ sender: UIButton) {
buttonToResize.titleLabel!.font = UIFont(name: "Helvetica", size: 40)
// Also tried buttonToResize.titleLabel?.font = UIFont .systemFont(ofSize: 4)
}
但是,不会套用变更。
有趣的是,对我来说,如果我尝试调整一些其他按钮(第二个)后,按下初始(第一个),它的工作如预期。
就像这样:
class ViewController: UIViewController {
@IBOutlet weak var buttonToResize: UIButton!
@IBOutlet weak var secondButtonToResize: UIButton!
@IBAction func buttonTapped(_ sender: UIButton) {
secondButtonToResize.titleLabel!.font = UIFont(name: "Helvetica", size: 40)
}
其他属性,如backgroundColor似乎适用,但与字体大小我面临的问题。
4条答案
按热度按时间zsohkypk1#
首先,这里是当你点击
UIButton
时的事件序列。1.按钮会将自己的
isHighlighted
属性设定为true
。1.该按钮触发任何
Touch Down
操作,如果您拖动手指,可能会触发多次。1.该按钮触发任何
Primary Action Triggered
操作(如您的buttonTapped
)。1.该按钮触发任何
Touch Up
操作。1.按钮会将自己的
isHighlighted
属性设定为false
。buttonTapped
之后的片刻,您按下的按钮会将您选择的字体覆盖为它自己的字体。那么,它从哪里提取旧字体呢?在加载视图时,它会应用UIAppearance设置,但当你按下按钮时,这些设置也会被丢弃。iOS 15+,它看起来像是使用了新的UIButton.Configuration结构。所以你可以把它放在你的
buttonTapped
中:我认为有一种更简单的方法可以做到这一点。无论你用哪种方法工作,确保它在按钮发生其他变化时也能工作,比如在按钮上发生其他事件将
isEnabled
设置为false
。sqougxex2#
你可能想要这样的东西
vc9ivgsu3#
这应该可以解决问题。请使用sender标记代替IBOutlet。
laawzig24#
Cowirrie分析让我想到了这个解决方案(经过测试)