LinkLabel 1.0.2

LinkLabel 1.0.2

测试已测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2016年1月
SPM支持SPM

Andrew Hart维护。



LinkLabel 1.0.2

  • 作者:
  • Andrew Hart

LinkLabel

具有自定义超链接样式的 UILabel,可选交互代理,最小化设置

发生了什么

创建一个具有属性文本的 UILabel,链接显示为蓝色和下划线,而在大多数情况下你不需要这样做。这相当尴尬,也是浪费时间来努力使它们按你希望的方式被样式化。

LinkLabel使得这一切都变得简单。不需要额外的代码,链接就显示与文本相同的颜色,但带有下划线。这就是默认值应该是的样子。

如果你想添加自定义样式,这同样非常简单。就像你为你的属性文本指定属性一样,你对链接想要不同的任何属性,都可以添加到LinkLabel的linkTextAttributeshighlightedLinkTextAttributes中。

安装

  1. Source文件夹的内容拖入你的Xcode项目中。
  2. #import "UIKit/UIGestureRecognizerSubclass.h"添加到Bridging Header文件。

使用方法

使用LinkLabel而不是UILabel创建一个标签。

let myLabel = LinkLabel()

设置属性文本,包括NSLinkAttributeName,按常规方式。

let text = "This is some text, which includes a link."
let fullRange = NSMakeRange(0, (text as NSString).length)
let linkRange = (text as NSString).rangeOfString("includes a link")

let attributedString = NSMutableAttributedString(string: text)
attributedString.addAttribute(NSFontAttributeName, value: UIFont.systemFontOfSize(15), range: fullRange)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.blackColor(), range: fullRange)
attributedString.addAttribute(NSLinkAttributeName, value: NSURL(string: "https://google.com")!, range: linkRange)

如果你还想定制链接外观

let linkTextAttributes = [
  NSUnderlineStyleAttributeName: NSNumber(integer: NSUnderlineStyle.StyleSingle.rawValue),
  NSForegroundColorAttributeName: UIColor.greenColor()
]

let highlightedLinkTextAttributes = [
  NSUnderlineStyleAttributeName: NSNumber(integer: NSUnderlineStyle.StyleSingle.rawValue),
  NSForegroundColorAttributeName: UIColor.redColor()
]

label.linkTextAttributes = linkTextAttributes
label.highlightedLinkTextAttributes = highlightedLinkTextAttributes

为了更容易响应用户点击链接,我增加了一个交互代理。采用LinkLabelInteractionDelegate并实现这个代理的函数。

label.interactionDelegate = self
//MARK: LinkLabelInteractionDelegate

func linkLabelDidSelectLink(linkLabel linkLabel: LinkLabel, url: NSURL) {
  print("did select link: \(url)")
}

致谢

Andrew Hart创建,用于TwIM。

ProjectDent.com

@ProjectDent