iOS Developer

Swift 常用富文本分类

2017-05-04  本文已影响439人  江水东流

写了一个常用的swift富文本分类,有指定字符串变颜色,字体,等待.效果图如下:

demo github下载地址

可变颜色.png 行间距.png
static func attributenStringColor(text:String,
                             selectedText: String,
                             allColor: UIColor,
                             selectedColor: UIColor,
                             fone: CGFloat)->NSMutableAttributedString{
    var rangeArray: [NSRange] = [NSRange]()
    var lastLength: Int = 0
    let attStr = NSMutableAttributedString.init(string: text, attributes: [NSFontAttributeName : UIFont.systemFont(ofSize: fone),NSForegroundColorAttributeName:allColor])
    var text = text as NSString
    while text.contains(selectedText) {
        let rang: NSRange =  text.range(of: selectedText)
        let rang2 = NSMakeRange(rang.location + lastLength, rang.length)
        rangeArray.append(rang2)
        lastLength += (rang.length + rang.location )
        text = text.substring(from: rang.length + rang.location) as NSString
    }
    for range1 in rangeArray {
        attStr.setAttributes([NSForegroundColorAttributeName:selectedColor], range: range1)
    }
    return attStr  }

//MARK: 指定两个字符中间文字变色
///
/// - Parameters:
/// - text: 所有字符串
/// - allColor: 基础颜色
/// - selectedColor: 特殊颜色
/// - firstStr: 其实字符串
/// - lastStr: 结束字符串
/// - fone: 基础字体
/// - Returns: NSMutableAttributedString

static func attributenStringMutColor(text:String,
                             allColor: UIColor,
                             selectedColor: UIColor,
                             firstStr : String,
                             lastStr : String,
                             fone: CGFloat)->NSMutableAttributedString{
    var rangeArray: [NSRange] = [NSRange]()
    var lastLength: Int = 0
    let attStr = NSMutableAttributedString.init(string: text, attributes: [NSFontAttributeName : UIFont.systemFont(ofSize: fone),NSForegroundColorAttributeName:allColor])
    var text = text as NSString
    while text.contains(firstStr) {
        let rang1: NSRange =  text.range(of: firstStr)
        let range2: NSRange =  text.range(of: lastStr)
        let orangeRange = NSMakeRange(rang1.location + 1, range2.location - (rang1.location + 1))
        let range = NSMakeRange(rang1.location + 1 + lastLength , range2.location - (rang1.location + 1) )
        rangeArray.append(range)
        lastLength += (orangeRange.length + orangeRange.location + 1)
        text = text.substring(from: orangeRange.length + orangeRange.location + 1) as NSString
    }
    for range1 in rangeArray{  attStr.setAttributes([NSForegroundColorAttributeName:UIColor.red], range: range1)
    }
    return attStr}

//MARK: 行间距
///
/// - Parameters:
/// - text: 整体字符串
/// - lineSpace: 行间距
/// - fone: 字图
/// - Returns: NSMutableAttributedString

static func lineSpace(text: String,lineSpace: CGFloat,fone: CGFloat)->NSMutableAttributedString{
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = lineSpace
let attStr = NSMutableAttributedString.init(string: text, attributes: [NSFontAttributeName : UIFont.systemFont(ofSize: fone)])
attStr.addAttributes([NSParagraphStyleAttributeName : paragraphStyle], range: NSMakeRange(0, text.characters.count))
return attStr }

上一篇 下一篇

猜你喜欢

热点阅读