Swift 根据按钮高度设置标题标签

Swift 根据按钮高度设置标题标签,swift,layout,uibutton,constraints,nslayoutconstraint,Swift,Layout,Uibutton,Constraints,Nslayoutconstraint,我的情况是,我想根据UIButton的高度设置UIButton元素的标题标签的字体大小,因此我的设置如下: let button: UIButton = { let button = UIButton() button.translatesAutoresizingMaskIntoConstraints = false button.setTitle("title", for: []) button.titleLabel?.minimumScaleFactor =

我的情况是,我想根据UIButton的高度设置UIButton元素的标题标签的字体大小,因此我的设置如下:

let button: UIButton = {
    let button = UIButton()
    button.translatesAutoresizingMaskIntoConstraints = false
    button.setTitle("title", for: [])
    button.titleLabel?.minimumScaleFactor = 0.5
    button.titleLabel?.numberOfLines = 1
    button.titleLabel?.adjustsFontSizeToFitWidth = true
    button.titleLabel?.lineBreakMode = .byClipping
    return button
}()

override func viewDidLoad() {
    super.viewDidLoad()

    self.view.addSubview(self.button)

    self.button.bottomAnchor.constraint(equalTo: self.someElement.topAnchor, constant: 0).isActive = true
    self.button.widthAnchor.constraint(equalTo: self.view.widthAnchor, multiplier: 0.33).isActive = true
    self.button.heightAnchor.constraint(equalTo: self.view.heightAnchor, multiplier: 0.1).isActive = true
    self.button.centerXAnchor.constraint(equalTo: self.view.centerXAnchor, constant: 0).isActive = true
}
会发生什么

按钮宽度设置为视图宽度的33%->good

按钮高度设置为视图高度的10%->良好

按钮标题标签字体大小保持较小且不随按钮高度缩放…->坏的


有人能给我解释一下吗?

用按钮高度缩放标签的一个可能的解决方案是在
视图显示方法中调整字体大小。在那里而不是在
viewDidLoad
中执行此操作非常重要,因为按钮高度在
viewDidLoad
中尚不清楚

以下截取的代码应将按钮的字体大小缩放为按钮高度的一半:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    // If you use a custom font, you have to replace systemFont with it
    button.titleLabel?.font = UIFont.systemFont(ofSize: button.frame.height * 0.5)
}
但是,如果标题变得很长,它将缩小以适应按钮宽度(因为您已将
adjustsFontSizeToFitWidth
设置为true)