2
3

More than 5 years have passed since last update.

ラベルの一部分の色を変える(Swift)

Posted at

ラベルの色を部分的に変えたい場合、少し調査が必要だったのでまとめます。
主に2パターンの方法があります。

その1 StroryBoardを使う

この方法だと、コードを書かなくていいので、設定が簡単にできます

スクリーンショット 2019-05-06 2.17.44.png

対象のラベルを選択した状態にします。

①TextをAttributedにします
②ラベルに表示する文言の色を変えたい部分だけ選択した状態で色を変える(赤枠の部分です)

これだけで部分的に色を変えれます。

その2 ソースコードで定義する

この方法だとStoryboardの設定は不要ですが、実装が必要です。

まずは、ラベルとソースコードでの定義を紐付けます

スクリーンショット 2019-05-06 2.27.54.png

上記のように黒い丸が付いていれば紐付けされているはずです。

次に、ラベルの設定をします。

controller.swift
let attrText1 = NSMutableAttributedString(string: taskLimitLabel.text!)

        attrText1.addAttributes([
            .foregroundColor: UIColor.red,
            ], range: NSMakeRange(6, 9))

taskLimitLabel.attributedText = attrText1

上の処理では属性を加える文字列を定義して、addAttributesで属性を加えています。
今回はrangeで色を変える文字が何番目かを設定し、foregroundColorで色を設定します。
最後に、属性を追加した文字をラベルに置き換えます。
これで一部分の色が変わります。

今回は2パターン記載しました。
実装でカスタマイズする方法は他にもあると思います。
個人的にはStoryboardを使ったほうが視覚的に見やすいと思いますが、複数人で開発など、ソースで書いた方がいいパターンもあると思うので、場合によって使い分けたいと思います。

参照

Apple Developer (NSAttributedString)

Apple Developer (NSMutableAttributedString)

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3