MTLLinkLabel alternatives and similar libraries
Based on the "Label" category.
Alternatively, view MTLLinkLabel alternatives based on common mentions on social networks and blogs.
-
TTTAttributedLabel
A drop-in replacement for UILabel that supports attributes, data detectors, links, and more -
ActiveLabel.swift
UILabel drop-in replacement supporting Hashtags (#), Mentions (@) and URLs (http://) written in Swift -
MZTimerLabel
A handy class for iOS to use UILabel as a countdown timer or stopwatch just like in Apple Clock App. -
NumberMorphView
A label view for displaying numbers which can transition or animate using a technique called number tweening or number morphing. -
THLabel
UILabel subclass, which additionally allows shadow blur, inner shadow, stroke text and fill gradient. -
AnimatedMaskLabel
Animated Mask Label is a nice gradient animated label. This is an easy way to add a shimmering effect to any view in your app. It is useful as an unobtrusive loading indicator.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of MTLLinkLabel or a related project?
README
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
}
}
Licence
Author
*Note that all licence references and agreements mentioned in the MTLLinkLabel README section above
are relevant to that project's source code only.