【发布时间】:2017-09-01 07:44:12
【问题描述】:
在我的项目中,我使用的是 swift 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 中将 String 的某些部分显示为 BOLD TEXT 并保留在 REGULAR TEXT 中。所以我在这个线程上找到了一些帮助: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
}
}
但是当 UILabel 帧发生更改时,我不知道如何更改此 NSMutableAttributedString 的字体大小?
任何帮助。
【问题讨论】: