每次使用NSAttributedString
的时候, 总会写一大堆臃肿的代码, 一般我们会写到Extension
或category
中,对String
, NSAttributedString
进行扩展, 然后调用起来稍微方便一些..
或者你也可以这样进行扩展
extension UILabel {
convenience init(frame: CGRect = .zero, attributedText: String, textColor: UIColor, font: UIFont, lineSpacing: CGFloat) {
self.init(frame: frame)
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = lineSpacing
paragraphStyle.lineBreakMode = .byTruncatingTail
let attrStr = NSAttributedString(string: attributedText, attributes: [NSParagraphStyleAttributeName: paragraphStyle,
NSFontAttributeName: font,
NSForegroundColorAttributeName: textColor])
self.attributedText = attrStr
}
}
或者
let attr = NSMutableAttributedString(string: content)
let paragrap = NSParagraphStyle()
paragrap.lineSpacing = 8.0
paragrap.alignment = .center
attr.addAttributes([NSParagraphStyle: paragrap], range: NSMakeRange(0, attr.length))
attr.addAttributes([NSFontAttributeName: UIFont.systemFont(ofSize: 17)], range: NSMakeRange(0, attr.length))
let shadow = NSShadow()
shadow.shadowColor = UIColor.red
shadow.shadowOffset = CGSize(width: 3, height: 3)
shadow.shadowBlurRadius = 2.0
attr.addAttributes([NSShadowAttributeName: NSShadow], range: NSMakeRange(0, attr.length))
label6.attributedText = attr
这里我对NSAttributedString
的所有属性都进行了简单的封装, 让开发者使用起来超方便
项目地址 如果你喜欢的话, 欢迎star
使用方法如下:
// 1. shadow: 阴影设置, 默认为allRange
label1.attributedText = content.toAttributed.shadow {
$0.shadowColor = UIColor.red
$0.shadowOffset = CGSize(width: 3, height: 3)
$0.shadowBlurRadius = 2.0
}.rawValue
// 2. paragraph: 段落设置, 默认为allRange
let attrText2 = content.toAttributed.paragraph {
$0.alignment = .center
$0.lineSpacing = 8.0
}.font(UIFont.systemFont(ofSize: 15))
label2.attributedText = attrText2.rawValue
// 这里并且可以直接得到富文本的高度
print(attrText2.getHeight(by: screenW - 20))
// 3. underLine: 下划线设置, 默认为allRange
label3.attributedText = content.toAttributed.underLine(style: [.styleDouble, .patternDot], color: UIColor.red).rawValue
// 4. 字体, 颜色设置
textField.attributedPlaceholder = "Please enter the phone number".toAttributed.font(.systemFont(ofSize: 15))
.foregroundColor(.red).rawValue
// 5. 富文本共同设置不同的rangge
label6.attributedText = content.toAttributed
.underLine(style: [.styleSingle, .patternDot], color: .red, range: NSMakeRange(0, 5))
.font(.systemFont(ofSize: 18), range: NSMakeRange(5, 5))
.backgroundColor(.blue, range: NSMakeRange(10, 5))
.foregroundColor(.purple, range: NSMakeRange(15, 5))
.baselineOffset(value: 5, range: NSMakeRange(20, 5))
.obliqueness(angle: 0.5, range: NSMakeRange(25, 5))
.kern(padding: 0.3, range: NSMakeRange(30, 5))
.expansion(value: 0.3, range: NSMakeRange(35, 5))
.stroke(color: .green, width: 3, range: NSMakeRange(40, 5))
.textEffect(range: NSMakeRange(50, 5))
.shadow{
$0.shadowColor = UIColor.red
$0.shadowOffset = CGSize(width: 3, height: 3)
$0.shadowBlurRadius = 2.0
}.rawValue
效果图: