TappableLabelView
TappableLabelView 是一个极其可定制并且轻量级的库,可以将带有可点击字符串的长文本显示任务变得非常简单。
标准文本版本 | 下划线文本版本 |
---|---|
新功能!
- 您希望多长的长字符串都可以。
- 可自定义的文本样式。
- 可自定义高亮文本样式。
- 可自定义文本对齐。
- 处理完全相同的字符串的多次出现的情况。
- 可以在单个文件中单独处理多个 TappableLabelView。
要求
- iOS 10.0+
- Xcode 10.2+
安装
CocoaPods
TappableLabelView 可通过 CocoaPods 使用。要安装它,只需将以下行添加到您的 Podfile 中。
pod 'TappableLabelView'
安装依赖。
$ pod install
然后在每个使用 TappableLabelView 的项目文件顶部添加以下内容。
import TappableLabelView
如何使用
- 以编程方式或将 UIView 添加到 nib 文件中。
- 将其类型设置为 TappableLabelView。
- 提供配置选项。
- textAttributes - 正文文本的样式。
- highlightedTextAttributes - 高亮文本(可点击文本)的样式。
- alignment - 文本对齐(
.left, .right, .justified
) - isUnderline - 指定可点击文本是否应加下划线。
- wordSpacing - 单词间的间距。
- lineSpacing - 字行间的间距。
- 提供要显示的 文本。
- 提供一个数组形式的可点击字符串列表。 - 请确保与特定字词相关的所有标点符号也应作为可点击字符串的一部分包含在内。
按编程方式实现
- 声明元素。
var tappableLabelView: TappableLabelView!
- 在
viewDidLoad()
override func viewDidLoad() {
super.viewDidLoad()
let options = ConfigurationOptions(textAttributes: textStyle.attributes,
highlightedTextAttributes: highlightedTextStyle.attributes,
alignment: .left,
isUnderline: true,
wordSpacing: 5,
lineSpacing: 6,
delegate: self)
tappableLabelView = TappableLabelView(frame: .zero, options: options)
tappableLabelView.translatesAutoresizingMaskIntoConstraints = false
tappableLabelView.text = "Tappable text"
tappableLabelView.tappableStrings = ["text", "Tappable"]
view.addSubview(tappableLabelView)
NSLayoutConstraint.activate([
tappableLabelView.heightAnchor.constraint(equalToConstant: 200),
tappableLabelView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
tappableLabelView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
tappableLabelView.topAnchor.constraint(equalTo: view.topAnchor)
])
}
使用 nib 文件实现
- 将一个 UIView 添加到 nib 文件中,并使其类型为
TappableLabelView
。 - 为 tappableLabelView 创建一个
IBOutlet
。 - 在
viewDidLoad()
中明确设置选项。
tappableLabelView.options = ConfigurationOptions(textAttributes: textStyle.attributes,
highlightedTextAttributes: highlightedTextStyle.attributes,
alignment: .left,
isUnderline: true,
wordSpacing: 5,
lineSpacing: 6,
delegate: self)
tappableLabelView.text = "Tappable text"
tappableLabelView.tappableStrings = ["text", "Tappable"]
处理点击事件
将类遵循 TappableLabelViewDelegate
,并实现 didTap
函数,以处理以下事件:
参数
- tappableLabelView - 被点击的
tappableLabelView
(在单个视图中使用多个可点击标签视图的情况下)。 - text - 点击文本。
- indexInText - 点击字符串在整个文本中的索引。
- index - 点击字符串在可点击字符串列表中的索引。
func didTap(tappableLabelView: TappableLabelView, text: String, indexInText: Int, index: Int) {
if self.tappableLabelView == tappableLabelView {
// Handle event
}
}
示例项目
在此处下载示例项目。