我在堆棧視圖中有一個標籤,它顯示各種不同的文本,但是當它顯示p和g時,底部會被截斷,如您在此處看到的。用p和g等字母標註文本的垂直截取
有什麼辦法防止這種情況?
更新:我需要我的標籤的大小保持不變,而更改標籤的字體大小。
我在堆棧視圖中有一個標籤,它顯示各種不同的文本,但是當它顯示p和g時,底部會被截斷,如您在此處看到的。用p和g等字母標註文本的垂直截取
有什麼辦法防止這種情況?
更新:我需要我的標籤的大小保持不變,而更改標籤的字體大小。
你可以嘗試添加
label.minimumScaleFactor = 0.5
OR
label.adjustsFontSizeToFitWidth = true
到標籤
試試這個。它應該做的伎倆
extension UILabel {
override open func layoutSubviews() {
super.layoutSubviews()
while self.font.pointSize > 1 {
//check the contentSize, if it's less then the actual label height then it should fit
//else change the font size
if self.intrinsicContentSize.height < self.frame.size.height {
break
}
self.font = self.font.withSize(font.pointSize - 1)
}
}
}
爲了確保您的標籤始終足夠大以容納內容,您需要在設置文本後每次調用sizeToFit()
。
下面是示例代碼
override func viewDidLoad() {
super.viewDidLoad()
label.text = "gpb"
label.backgroundColor = .red
label.sizeToFit()
Timer.scheduledTimer(timeInterval: 1, target: self,
selector: #selector(self.timerDidFire(timer:)), userInfo: nil, repeats: true)
}
func timerDidFire(timer: Timer) {
size += 5
label.font = label.font.withSize(CGFloat(size))
label.sizeToFit()
}
它看起來像
這不工作由於某種原因我以前測試過,它導致同樣的事情發生 – joshLor
我改變字體解決了問題 – Obarg