我正在嘗試創建一個UILabel包含兩個不同字體的文本,其中一個文本NSMutableAttributedString垂直位于另一個文本的頂部。在嘗試通過 swift 插入換行符時,\n我發現附加的字串消失了。我嘗試了各種lineBreakMode沒有結果(有和沒有\n)的s,同時確保框架不會通過設定一個大的maximumLineHeight.
我還應該提到,根據 Apple 的檔案,在設定UILabel.attributedText任何NSAttributedText實體時
當標簽具有屬性字串值時,系統將忽略 textColor、font、textAlignment、lineBreakMode 和 lineBreakStrategy 屬性。改為在屬性字串中設定 foregroundColor、字體、對齊方式、lineBreakMode 和 lineBreakStrategy 屬性。
這是為了問題而簡化的一些代碼(我也嘗試.sizeTofit()在設定標簽attributedText以及設定不同的.lineBreakStrategys后呼叫)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .center
paragraphStyle.lineBreakMode = .byWordWrapping
let totalVisitsString = NSMutableAttributedString(string: "\(visitLogs.count)\n", attributes: [.font : UIFont.systemFont(ofSize: 25), .paragraphStyle : paragraphStyle])
totalVisitsString.append(NSMutableAttributedString(string: "Total visits", attributes: [.font : UIFont.systemFont(ofSize: 14)]))
totalVisitsLabel.attributedText = totalVisitsString
標簽本身:
var totalVisitsLabel: UILabel = {
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
uj5u.com熱心網友回復:
默認情況下,你的標簽numberOfLines是 1。你永遠不會改變它,所以這就是你得到的。
uj5u.com熱心網友回復:
創建時的標簽默認為 1 行。您需要將行數設定為 0(無限制)或您希望將其最大化的任何數字。
var totalVisitsLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0
label.translatesAutoresizingMaskIntoConstraints = false
return label
}()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/399416.html
上一篇:ZStack中的顏色行為不正常
下一篇:有沒有辦法讓視頻快速重復?
