使用TextKit自定义UILabel,使用正则匹配链接(不同颜色显示)等,提高Label性能(Xcode 8.2.1 (8C1002) swift3最新语法)

本文介绍了如何在Swift中利用TextKit和NSRegularExpression自定义UILabel,实现正则匹配文本中的链接,并以不同颜色显示。通过这种方式,可以提升UILabel的性能,适用于显示如微博等内容。
摘要由CSDN通过智能技术生成
//
//  TGLabel.swift
//  sinaweibo
//
//  Created by targetcloud on 2017/2/27.
//  Copyright © 2017年 targetcloud. All rights reserved.
//

import UIKit

@objc
public protocol TGLabelDelegate: NSObjectProtocol {
    @objc optional func labelDidSelectedLinkText(label: TGLabel, text: String)
}

public class TGLabel: UILabel {

    public var linkTextColor = UIColor.blue
    public var selectedBackgroudColor = UIColor.lightGray
    public weak var delegate: TGLabelDelegate?
    private lazy var linkRanges = [NSRange]()
    private var selectedRange: NSRange?
    private lazy var textStorage = NSTextStorage()
    private lazy var layoutManager = NSLayoutManager()
    private lazy var textContainer = NSTextContainer()
    private let patterns = ["[a-zA-Z]*://[a-zA-Z0-9/\\.]*", "#.*?#", "@[\\u4e00-\\u9fa5a-zA-Z0-9_-]*"]
    
    override public var text: String? {
        didSet {
            updateTextStorage()
        }
    }
    
    override public var attributedText: NSAttributedString? {
        didSet {
            updateTextStorage()
        }
    }
    
    override public var font: UIFont! {
        didSet {
            updateTextStorage()
        }
    }
    
    override public var textColor: UIColor! {
        didSet {
            updateTextStorage()
        }
    }
    
    private func updateTextStorage() {
        if attributedText == nil {
            attributedText = NSAttributedString(string: text ?? "")
        }
        let attrStringM = addLineBreak(attributedText!)
        regexLinkRanges
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值