このエントリーをはてなブックマークに追加

2017年1月20日金曜日

Swift3でTTTAttributedLabelの文字列からリンク表示をやってみた

こんにちはonukiです。

今回はTTTAttributedLabelを使用し、
文字列からリンクを表示、リンクタップ制御を
Swiftでの実装方法を書いてこうと思います。

TTTAttributedLabelとは

リッチなテキストを表示するためのUILabelの機能を拡張するOSSです。
その機能の一つに文字列からリンクを検出してくれる機能があるので
今回は主にその部分の実装についてになります。

準備

インストールにはCocoaPodsを使用します。
pod 'TTTAttributedLabel'
それと、TTTAttributedLabelはObjective-Cで書かれているので
Bridging-Header.hにimportしてください。
#import <TTTAttributedLabel/TTTAttributedLabel.h>

実装

まずはTTTAttributedLabelをimportします
import TTTAttributedLabel
StoryboardにUILabelを適当に用意し
ClassにTTTAttributedLabelを指定してください。
それをIBOutlet接続します。
@IBOutlet weak var linkLabel: TTTAttributedLabel!
テキストのリンクをタップできるように設定します。
linkLabel.enabledTextCheckingTypes = NSTextCheckingResult.CheckingType.link.rawValue
リンクを含むテキストをセットします。
linkLabel.text = "URLにタップできます。\nhttps://www.google.co.jp/"
そうするとこのような表示になります。

このままだとタップが検知できないので
TTTAttributedLabelDelegateを設定します。
class ViewController: UIViewController, TTTAttributedLabelDelegate {
TTTAttributedLabelのDelegateを設定します。
linkLabel.delegate = self
テキスト内のリンクがタップされた場合、以下のメソッドが呼ばれます。
func attributedLabel(_ label: TTTAttributedLabel!, didSelectLinkWith url: URL!) {
    //処理
}
これで、文字列からリンクを表示、リンクタップ制御ができたと思います。

0 件のコメント:

コメントを投稿