在我的项目中,我使用迅捷3.0。现在我正在使用以下课程(UILabel 子类)根据 UILabel 框架高度调整字体大小。当 UILabel 框架发生更改时,layoutSubviews 会重新计算比例字体大小。
class Label: UILabel {
// FIXME: - properties
var fontSize: CGFloat = 0
var frameHeight: CGFloat = 0
// FIXME: - proportional font size adjustment
override func layoutSubviews() {
super.layoutSubviews()
font = font.withSize(frame.size.height * (fontSize / frameHeight))
}
}
如何使用:
private let id: Label = {
let label = Label()
label.textAlignment = .left
label.numberOfLines = 1
label.font = UIFont.systemFont(ofSize: 17, weight: .semibold)
label.textColor = UIColor(hex: 0x212121, alpha: 1)
label.fontSize = 17
label.frameHeight = 20
label.clipsToBounds = true
return label
}()
现在我想将 UILabel 中的字符串的某些部分显示为粗体文本,并保留为常规文本。所以我在这个线程上找到了一些帮助:使用 swift 中的属性字符串将文本设为粗体 https://stackoverflow.com/questions/28496093/making-text-bold-using-attributed-string-in-swift
我正在使用 NSMutableAttributedString 的“Prajeet Shrestha's”扩展。
// "Prajeet Shrestha's" extension
extension NSMutableAttributedString {
func bold(_ text:String) -> NSMutableAttributedString {
let attrs:[String:AnyObject] = [NSFontAttributeName : UIFont(name: "AvenirNext-Medium", size: 12)!]
let boldString = NSMutableAttributedString(string:"\(text)", attributes:attrs)
self.append(boldString)
return self
}
func normal(_ text:String)->NSMutableAttributedString {
let normal = NSAttributedString(string: text)
self.append(normal)
return self
}
}
但我不明白如何改变这个字体大小NSMutableAttributedString,UILabel框架何时发生变化?
任何帮助表示赞赏。