我处于这种情况,我想根据UIButton的高度设置一个UIButton元素的titleLabel字体大小,所以这是我的设置:
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% - >好
按钮高度设置为视图高度的10% - >好
按钮titleLabel字体大小保持较小,并且按钮高度不会缩放...... - >坏
有人可以向我解释一下吗?
答案 0 :(得分:2)
使用按钮高度缩放标签的一种可能解决方案是使用authors_list = ['Tom', 'John', 'Sara', 'Kati']
方法调整字体大小。由于viewDidAppear
中尚未知道按钮高度,因此在那里而不是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)
}
设置为true)。