//
// 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
使用TextKit自定义UILabel,使用正则匹配链接(不同颜色显示)等,提高Label性能(Xcode 8.2.1 (8C1002) swift3最新语法)
最新推荐文章于 2022-07-27 15:37:28 发布
本文介绍了如何在Swift中利用TextKit和NSRegularExpression自定义UILabel,实现正则匹配文本中的链接,并以不同颜色显示。通过这种方式,可以提升UILabel的性能,适用于显示如微博等内容。
摘要由CSDN通过智能技术生成