增加文本检查特性, 控件增加监听不同类型的点击事件支持, 优化API
New Version ヾ(@^▽^@)ノ 💥
特性:
增加文本检查特性, 可过滤匹配指定类型的内容, 例如: Action
类型, 正则表达式类型, NSDataDetector
自带的类型等.
-
UILabel & UITextView & NSTextField 原支持Action的控件 增加了监听方法, 可监听某一个或多个类型的点击事件.
-
为某一个或多个类型 添加新的属性 或 为某一个或多个类型 覆盖原有属性.
应用:
-
例如为整段文本的电话号码类型增加点击事件获取 跳转拨号.
-
例如在View的
tintAdjustmentMode
为.dimmed
时, 设置Action
类型的颜色转为灰色. -
例如为整段文本添加一个正则表达式类型 为符合表达式的内容增加高亮的颜色.
更多细节可参考README 和 Demo, 如果你有更好的想法 可以Issues留言.
API
Changed:
AttributedString:
old:
init(_: String)
new:
init(string: String)
AttributedString.Attribute:
old:
func color(_: Color)
new:
func foreground(_: Color)
Add:
Class:
AttributedString.Checking:
extension AttributedString {
public enum Checking: Hashable {
/// 自定义范围
case range(NSRange)
/// 正则表达式
case regex(String)
#if os(iOS) || os(macOS)
case action
#endif
///
case date
case link
case address
case phoneNumber
case transitInformation
}
}
AttributedString.Checking.Result:
extension AttributedString.Checking {
public enum Result {
/// 自定义范围
case range(NSAttributedString)
/// 正则表达式
case regex(NSAttributedString)
#if os(iOS) || os(macOS)
case action(AttributedString.Action.Result)
#endif
case date(Date)
case link(URL)
case address(Address)
case phoneNumber(String)
case transitInformation(TransitInformation)
}
}
Founction:
AttributedString:
init(string: String, _: Attribute...)
init(string: String, with: [Attribute])
func isContentEqual(_: AttributedString?)
mutating func add(attributes: [Attribute], range: NSRange)
mutating func set(attributes: [Attribute], range: NSRange)
mutating func add(attributes: [Attribute], checkings: [Checking])
mutating func set(attributes: [Attribute], checkings: [Checking])
UILabel & UITextView & NSTextField:
func observe(_ checking: Checking, highlights: [Highlight], with: @escaping (Checking.Result) -> Void)
func observe(_ checkings: [Checking], highlights: [Highlight], with: @escaping (Checking.Result) -> Void)
func remove(checking: Checking)
func remove(checkings: [Checking])
Remove:
AttributedString:
init<T>(_ value: T)