以新浪微博消息来源为例,获取到微博来源信息,截取来源字段
<a href="http://app.weibo.com/t/feed/5yiHuw" rel="nofollow">iPhone 6 Plus</a>
字符串截取
let start = sour.rangeOfString("\">")!
let end = sour.rangeOfString("</a>")!
let string = sour.substringWithRange(start.endIndex..<end.startIndex)
//let string = sour.substringWithRange(start.endIndex..<end.endIndex.advancedBy(-4))
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)
效果图:
如果想要将真实来源部分设置颜色,只需将获取Range的参数换成之前截取的string即可
//let nsRange = (appendString as NSString).rangeOfString("来自")
let nsRange = (appendString as NSString).rangeOfString(string)
效果图:
设置富文本属性的方法:
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 阴影