iOS Swift3.0 富文本的使用 -- 改变行间距、添加点击事件

最近自己在写一个SwiftApp, 涉及到富文本这块, 上镜率也不是很高, 稍微做下笔记

效果图
输出板
    // 1.定义一个字符串 
    // 将String类型转换成 NSString,否则在第五步获取range时类型转换很麻烦
    let contentStr = " Swift3.0 富文本的使用@111111,改变行间距、添加点击事件@222222"  as NSString
    // 2.初始化富文本
    let nameStr : NSMutableAttributedString = NSMutableAttributedString(string:contentStr as String)
     
    // 3.添加样式 (行间距和对其方式)
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineSpacing = 6
    paragraphStyle.alignment = .left
    // 4.行间距
    nameStr.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSMakeRange(0, contentStr.length))
    // 5.关键代码 添加事件
    let range = contentStr.range(of: "@111111", options: .regularExpression, range: NSMakeRange(0,contentStr.length))
    let range1 = contentStr.range(of: "@222222", options: .regularExpression, range: NSMakeRange(0,contentStr.length))
    nameStr.addAttribute(NSLinkAttributeName, value: "frist://", range: range)
    nameStr.addAttribute(NSLinkAttributeName, value: "second://", range: range1)
    
    // 6.赋值
    textView.attributedText = nameStr

    textView.isEditable = false
    textView.delegate = self  
    textView.font = UIFont.systemFont(ofSize: 12)
    youView.addSubview(textView)
    textView.snp.makeConstraints { (make) in
        //...
    }

然后在UITextViewDelegate中处理事件

    // MARK: - UITextViewDelegate
    func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool { 
        if URL.scheme == "frist" {
            print("点击@111111")
            return false
        }
        if URL.scheme == "second" {
            print("点击222222")
            return false
        }
        return true
    }  

暂时涉及到的用法就这些, 以后用得到继续补充

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,744评论 25 709
  • 最近负责公司产品笔记模块的开发,设计到富文本编辑的功能。刚开始做的时候并没有考虑到和web端对接,直接用UITex...
    flightlessBirdT阅读 11,200评论 38 50
  • 起风的年龄 徐 宏 从前,总爱自作多情地写下一些女性味十足的句子,为一次关心为一次温柔为一次流泪...
    sunxuhong阅读 470评论 0 1
  • 悉尼/凯恩斯/大堡礁/热带雨林 悉尼--凯恩斯--大堡礁 2008年11月20日至21日,我们是在凯恩斯和大...
    闻丁阅读 477评论 0 1