swift实现微博@及#话题#功能
2015-10-30 19:42
447 查看
在微博信息流中点击@某人然后跳转到某人的主页,以及点击话题跳到相关话题页,类似于HTML中的文本链接,在iOS中实现方法也差不多,也是往文本中添加文本链接的方式,具体看以下代码
let text:String = "#证人杨幂发福利# 电影《我是证人》#福利#即将在2015-10-25上映咯!转发@电影我是证人 地址(http://www.baidu.com)@杨幂 哟~"
let attributedString:NSMutableAttributedString = NSMutableAttributedString(string:text)
let textRange = NSRange(location: 0, length: text.length)
//规则检查
var ranges:[NSRange] = []
//话题(使用正则匹配出#话题#所在位置)
var reg = try? NSRegularExpression(pattern: "#.+?#", options: [])
reg?.enumerateMatchesInString(text, options: [], range: textRange, usingBlock: {result, flags, ptr in
if let result = result
{
ranges.append(result.range)
}
})
//然后给话题所在的文本添加链接
for range in ranges
{
let subject = (text as NSString).substringWithRange(range)
attributedString.addAttribute(NSLinkAttributeName, value: "yourapp://subject?text=\(subject.URLEncoded)", range: range)
}
//@某人
ranges.removeAll()
reg = try? NSRegularExpression(pattern: "@[^\\s]+", options: [])
reg?.enumerateMatchesInString(text, options: [], range: textRange, usingBlock: {result, flags, ptr in
if let result = result
{
ranges.append(result.range)
}
})
for range in ranges
{
let subject = (text as NSString).substringWithRange(range)
attributedString.addAttribute(NSLinkAttributeName, value: "yourapp://mind?name=\(subject.URLEncoded)", range: range)
}
//文本框
let textView:UITextView = UITextView()
textView.editable = false
textView.frame = CGRectMake(20, 10, view.frame.width - 20, 150)
textView.attributedText = attributedString
textView.linkTextAttributes = [NSForegroundColorAttributeName:UIColor.blueColor()]
view.addSubview(textView)
//在此统一处理
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
{
//在此处理相关链接
//openURL:yourapp://mind?name=%40%E6%9D%A8%E5%B9%82,scheme:yourapp, query:Optional("name=%40%E6%9D%A8%E5%B9%82")
print("openURL:\(url),scheme:\(url.scheme), query:\(url.query)")
return true
}
相关文章推荐
- IOS9.0-Swift 引导页面实现
- Swift继承(Inheritance)
- 【Swift】 应用内显示 AppStore 某个应用的详情
- Swift(三、元组-可选类型及其解析)
- Swift下标(Subscripts)
- swift手记-trie自动机
- 【iOS】Swift GCD-下
- 【iOS】Swift GCD-下
- 【iOS】Swift GCD-上
- 【iOS】Swift GCD-上
- swift 学习笔记 - 数组,字典,元组
- Swift方法(Methods)
- Swift IOS errer:only instance methods can be declared 'IBAction'解决方法
- 利用UIWebView打造一个炫酷的视频背景视图(OC & Swift)
- Swift完整教程系列
- swift 快速奔跑的兔几 本节的内容是:协议和委托
- iOS开发系列--Swift语言
- Swift(二、集合)
- 《从零开始学Swift》学习笔记(Day 29)——访问级别
- 《从零开始学Swift》学习笔记(Day 29)——访问级别