gpt4 book ai didi

ios - 调整 NSMutableAttributedString 的字体大小与 UILabel 的框架高度成比例

转载 作者:行者123 更新时间:2023-12-02 04:00:11 28 4
gpt4 key购买 nike

在我的项目中,我使用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 中字符串的某些部分显示为粗体文本,并保留为常规文本。所以我在这个线程上找到了一些帮助: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 的字体大小?

希望得到任何帮助。

最佳答案

试试这个

来源Looping Through NSAttributedString Attributes to Increase Font SIze

 mutableStringObj?.enumerateAttribute(NSFontAttributeName, in: NSRange(location: 0, length: mutableStringObj?.length), options: [], usingBlock: {(_ value: Any, _ range: NSRange, _ stop: Bool) -> Void in
if value {
var oldFont: UIFont? = (value as? UIFont)
var newFont: UIFont? = oldFont?.withSize(CGFloat(oldFont?.pointSize * 2))
res?.removeAttribute(NSFontAttributeName, range: range)
res?.addAttribute(NSFontAttributeName, value: newFont, range: range)
}
})

关于ios - 调整 NSMutableAttributedString 的字体大小与 UILabel 的框架高度成比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43252440/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com