我用这行代码设置我的按钮标题:
self.timerButton.setTitle(String(Int(duration)), for: .normal)
按钮大到屏幕的1/3,文本大小为60,这在以前的项目中很好,但现在duration
的值发生了变化(从120~0),文字经常显示...
,有时甚至是数字的一半,这有什么不对?
以下是调试器中显示的约束:
答案 0 :(得分:4)
试试这可能会对你有所帮助:
self.timerButton.titleLabel?.adjustsFontSizeToFitWidth = true
答案 1 :(得分:2)
@ Deny的评论非常有用,我查看了我的约束条件,发现我用这种方法设置了按钮的图像大小:
self.contentEdgeInsets = UIEdgeInsets(top: (self.frame.height - imageSize) / 2, left: (self.frame.width - imageSize) / 2, bottom: (self.frame.height - imageSize) / 2, right: (self.frame.width - imageSize) / 2)
导致titleLabel
的大小小于应有的大小,因此我将上述代码更改为:
self.imageEdgeInsets = UIEdgeInsets(top: (self.frame.height - imageSize) / 2, left: (self.frame.width - imageSize) / 2, bottom: (self.frame.height - imageSize) / 2, right: (self.frame.width - imageSize) / 2)
然后它奏效了。
TL; DR
问题是由约束引起的。
答案 2 :(得分:1)
这不是一个完美的解决方案,但是设置宽度限制会迫使按钮不能缩小太多,就像这样:
myButton.translatesAutoresizingMaskIntoConstraints = false
myButton.widthAnchor.constraint(greaterThanOrEqualToConstant: 180).isActive = true