MTLLinkLabel is linkable UILabel.
  • June 3, 2025

MTLLinkLabel is linkable UILabel. Written in Swift.

Requirements


  • iOS 8.0+
  • Xcode 7.3+

Installation


Carthage

You can install Carthage with Homebrew.

$ brew update
$ brew install carthage

specify it in your Cartfile

github "recruit-mtl/MTLLinkLabel"

And run carthage

$ carthage update –platform ios

CocoaPods

$ pod init

specify it in your Podfile

platform :ios, ‘8.0’

target ‘MTLLinkLabelExample’ do

use_frameworks!

pod ‘MTLLinkLabel’, ‘~> 0.1.6’

end

And run CocoaPods

$ pod install

Usage


You can use MTLLinkLabel in Storyboard or XIB.

#####Drag and drop UILabel in your view.

#####Change UILabels custom class to ‘LinkLabel’, and Change module to ‘MTLLinkLabel’.

You must change labels userInteractionEnabled property to true. Because, this labels properties default value is false.

label.userInteractionEnabled = true

#####Assign String to LinkLabels ‘text’ property.

label.text = “Hello. https://github.com/recruit-mtl/MTLLinkLabel”

Add custom link

You can add custom link in LinkLabel with range and Action at the time of the link selection.

let range = (text as NSString).rangeOfString(“1829”)

cell.label.addLink(
NSURL(string: “https://www.google.co.jp/#q=1829”)!,
range: range,
linkAttribute: [
NSForegroundColorAttributeName: UIColor.redColor(),
NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue
]
) { (url) -> Void in

let alert = UIAlertController(title: nil, message: url.absoluteString, preferredStyle: UIAlertControllerStyle.ActionSheet)
alert.addAction(UIAlertAction(title: “Go”, style: .Default, handler: { (action) -> Void in
UIApplication.sharedApplication().openURL(url)
}))
alert.addAction(UIAlertAction(title: “Cancel”, style: .Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}

Delegate

LinkLabelDelegate methods are optional method.

The default implementation is implemented in protocol extension.

public extension LinkLabelDelegate {

func linkLabelExecuteLink(linkLabel: LinkLabel, text: String, result: NSTextCheckingResult) -> Void {

if result.resultType.contains(.Link) {

let pattern = “[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]+”
if NSPredicate(format: “SELF MATCHES ‘\(pattern)'”).evaluateWithObject(text) {
UIApplication.sharedApplication().openURL(NSURL(string: “mailto:” + text)!)
return
}

let httpText = !text.hasPrefix(“http://”) && !text.hasPrefix(“https://”) ? “http://” + text : text

guard let url = NSURL(string: httpText) else { return }
UIApplication.sharedApplication().openURL(url)

}
else if result.resultType.contains(.PhoneNumber) {
let telURLString = “tel:” + text
UIApplication.sharedApplication().openURL(NSURL(string: telURLString)!)
}
}

func linkAttributeForLinkLabel(linkLabel: LinkLabel, checkingType: NSTextCheckingType) -> [String: AnyObject] {
return [
NSForegroundColorAttributeName: linkLabel.tintColor,
NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue
]
}

func linkDefaultAttributeForCustomeLink(linkLabel: LinkLabel) -> [String: AnyObject] {
return [
NSForegroundColorAttributeName: linkLabel.tintColor,
NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue
]
}

func linkLabelCheckingLinkType() -> NSTextCheckingTypes {
return NSTextCheckingType.Link.rawValue
| NSTextCheckingType.PhoneNumber.rawValue
}
}

GitHub


View Github

YOU MIGHT ALSO LIKE...
MijickPopups Hero

  Popups Alerts Resizable Sheets Banners

SwiftUI Tooltip

This package provides you with an easy way to show tooltips over any SwiftUI view, since Apple does not provide ...

SimpleToast for SwiftUI

SimpleToast is a simple, lightweight, flexible and easy to use library to show toasts / popup notifications inside iOS or ...

SSToastMessage

Create Toast Views with Minimal Effort in SwiftUI Using SSToastMessage. SSToastMessage enables you to effortlessly add toast notifications, alerts, and ...

ToastUI

A simple way to show toast in SwiftUI   Getting Started • Documentation • Change Log