カテゴリー: iOS

SwiftでTTTAttributedLabelの文字列からリンク表示

はじめに

こんにちは。

はじめましてnukkyです!

よくある挙動ですが、リンクが含まれる文字列を表示する際に
リンクのタップでブラウザを開きたいとなることがあると思います。

そこで、今回はTTTAttributedLabelを使用し、
文字列からリンクの表示、リンクタップ制御を行います。

TTTAttributedLabelとは

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

https://github.com/TTTAttributedLabel/TTTAttributedLabel#tttattributedlabel

CocoaPodsでインストール

インストールにはCocoaPodsを使用します。

pod 'TTTAttributedLabel'

それと、TTTAttributedLabelはObjective-Cで書かれているので
Bridging-Header.hにimportしてください。

#import <TTTAttributedLabel/TTTAttributedLabel.h>

実装

Labelの表示

まずは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 {

LabelのDelegateを設定します。

linkLabel.delegate = self

テキスト内のリンクがタップされた場合、以下のメソッドが呼ばれます。

func attributedLabel(_ label: TTTAttributedLabel!, didSelectLinkWith url: URL!) {
    //処理
}

これで、文字列からリンクを表示、リンクタップ制御ができたと思います。

さいごに

UITextViewをつかえば標準でリンクの検知ができますが、
標準の外部ブラウザ起動しかできないので、
TTTAttributedLabelをつかえば、何か処理を挟んだり、
内部のWebViewを起動したりと色々できるので
リンク検知でゴニョゴニョしたいときは便利だと思います!

nukky

シェア
執筆者:
nukky
タグ: Swift

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

3週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

1か月 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前