富文本NSMutableAttributeString

以新浪微博消息来源为例,获取到微博来源信息,截取来源字段

     iPhone 6 Plus

字符串截取

        let start = sour.rangeOfString("\">")!
        let end = sour.rangeOfString("")!
        let string = sour.substringWithRange(start.endIndex..

string就是截取到的来源字段:iPhone 6 Plus

接下来拼接字符串,"来自 iPhone 6 Plus" , 并为"来自"设置一个颜色

        //拼接字符串  e.g. 来自 iPhone 6s Plus
        let appendString = "来自 \(string)"
        //实例化富文本
        let attributeString = NSMutableAttributedString(string: appendString)
        
        //获取"来自"在字符串中的区间,因为addAttributes中需要的是一个NSRange类型
        //所以这里将String先转成NSString类型,再通过rangeOfString得到一个NSRange
        let nsRange = (appendString as NSString).rangeOfString("来自")
        //设置属性
        attributeString.addAttributes([NSForegroundColorAttributeName : THEMECOLOR], range: nsRange)

效果图:

富文本NSMutableAttributeString_第1张图片
Attribute.png

如果想要将真实来源部分设置颜色,只需将获取Range的参数换成之前截取的string即可

        //let nsRange = (appendString as NSString).rangeOfString("来自")
        let nsRange = (appendString as NSString).rangeOfString(string)

效果图:

富文本NSMutableAttributeString_第2张图片
Attribute_01.png
设置富文本属性的方法:
        addAttributes([String : AnyObject], range: NSRange)
        addAttribute(String, value: AnyObject, range: NSRange)
  • addAttributes第一个参数是一个字典,可以同时设置多个属性
  • range参数需要的是一个NSRange类型,如果在Swift下直接对String类型使用rangeOfString,得到的是Range类型,所以需要先将String类型字符串转换成NSString后再调用rangeOfString方法
富文本常用属性
  • NSFontAttributeName 字体
  • NSParagraphStyleAttributeName 段落格式
  • NSForegroundColorAttributeName 字体颜色
  • NSBackgroundColorAttributeName 背景颜色
  • NSStrikethroughStyleAttributeName删除线格式
  • NSUnderlineStyleAttributeName 下划线格式
  • NSStrokeColorAttributeName 删除线颜色
  • NSStrokeWidthAttributeName删除线宽度
  • NSShadowAttributeName 阴影

你可能感兴趣的:(富文本NSMutableAttributeString)