iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

iOSアプリのUITextView内で複数のスタイルを適用する方法【Swift/NSAttributedString】

UITextView内で複数のスタイルを表現するには?

iOSのUITextView内で複数のスタイル(文字装飾)を表現するには、NSAttributedString(属性付き文字列)を使用します。UITextViewにはattributedTextというプロパティが用意されており、このプロパティに属性付き文字列を設定することで、ビュー内のテキストに対してフォントサイズや文字色などのスタイルを柔軟に適用できます。
ここでは、実際のコード例を通じて具体的な手順を解説します。

ステップ1:属性を作成する

まず、フォントや文字色といったスタイル情報をまとめた属性を1つ作成します。

let attributeOne : [NSAttributedString.Key : Any] = [NSAttributedString.Key(rawValue: NSAttributedString.Key.font.rawValue) : UIFont.systemFont(ofSize: 16.0), NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue) : UIColor.blue]

この例では、システムフォント16pt・青色という属性を定義しています。

ステップ2:属性付き文字列を生成する

次に、先ほど作成した属性をNSAttributedStringに渡し、属性付き文字列を生成します。

let string = NSAttributedString(string: "Text for first Attribute", attributes: attributeOne)

ステップ3:異なる属性の文字列を作成して連結する

同様の手順で、異なる属性(たとえばシステムフォント20pt・赤色など)を持つ別の文字列も作成できます。そして、NSMutableAttributedStringのappendメソッドを使うことで、スタイルの異なる複数の文字列を1つのテキストとして連結可能です。最後に、この属性付き文字列でtextViewのテキストを初期化しましょう。

コード全体

ここまでの内容をまとめると、コード全体は以下のようになります。

let tx = UITextView()
    tx.isScrollEnabled = true
    tx.isUserInteractionEnabled = true
    tx.frame = CGRect(x: 10, y: 25, width: self.view.frame.width, height: 100)
    let attributeOne : [NSAttributedString.Key : Any] = [NSAttributedString.Key(rawValue: NSAttributedString.Key.font.rawValue) : UIFont.systemFont(ofSize: 16.0), NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue) : UIColor.blue]
    let attributeTwo : [NSAttributedString.Key : Any] = [NSAttributedString.Key(rawValue: NSAttributedString.Key.font.rawValue) : UIFont.systemFont(ofSize: 20.0), NSAttributedString.Key(rawValue: NSAttributedString.Key.foregroundColor.rawValue) : UIColor.red]
    let string = NSAttributedString(string: "Text for first Attribute", attributes: attributeOne)
    let string2 = NSAttributedString(string: "Text for first Attribute", attributes: attributeTwo)
    let finalAttributedString = NSMutableAttributedString()
    finalAttributedString.append(string)
    finalAttributedString.append(string2)
    tx.attributedText = finalAttributedString
    self.view.addSubview(tx)

このコードをviewDidLoadやviewWillAppearなどのライフサイクルメソッド内に記述してアプリを実行すると、以下のように16ptの青色テキストと20ptの赤色テキストが混在したtextViewが表示されます。

iOSアプリのUITextView内で複数のスタイルを適用する方法【Swift/NSAttributedString】

まとめ

UITextViewで部分的に異なるスタイルを適用したい場合は、NSAttributedStringで各文字列に属性を付与し、NSMutableAttributedStringで連結してattributedTextプロパティに設定するのが基本の流れです。この手法を使えば、強調表示や注釈など、リッチなテキスト表現を簡単に実現できます。

  1. iOS 14の「Appライブラリ」とは?使い方と便利な活用テクニックを徹底解説

    iOS 14は、今すぐインストールできる最新のOSアップデートで、数々の便利な新機能が搭載されています。ホーム画面に配置できる新しいウィジェット、外国語とコミュニケーションが取れるApple翻訳アプリ、そして進化したメッセージアプリなど、iPhoneユーザーにとって嬉しい要素が満載です。しかし、その中でも特に注目すべき変更点が「Appライブラリ」の追加です。これにより、iPhone誕生以来続いてきた「何ページにもわたるアプリ画面」からついに解放されることになりました。 この記事では、この重要なデザイン変更の使い方と、その魅力について詳しく解説します。iOS 14の新機能については、包括的なガイ

  2. iPhone・iPadで複数のPDFファイルを1つに結合する方法|「ショートカット」アプリの使い方

    PDF(Portable Document File)形式は、1990年代初頭にAdobeが開発して以来、大きく進化を遂げ、現在では最も広く利用されているドキュメント形式のひとつとなっています。通常のWord文書(.doc)と比べた最大のメリットは、内容を簡単には編集できないという点です。そのため、他の人に勝手に編集・改ざんされにくく、データを安全にやり取りできる媒体として重宝されています。 WindowsやMac、Linux向けには多彩なPDF編集ツールが存在しますが、iOS向けの優れたPDF編集アプリはまだ少ないのが現状です。スマートフォンでPDFを活用したいユーザーにとっては、少し不便