SwiftでAttributedStringとNSAttributedStringを使ったリッチテキスト表示の基本
生徒
「先生、Swiftで文字の色を変えたり、一部分だけ太字にしたりする方法はありますか?」
先生
「はい、それにはAttributedStringやNSAttributedStringという仕組みを使います。これを使うと、文字列に色やフォントなどの装飾を加えてリッチテキストを表示できますよ。」
生徒
「リッチテキストって何ですか?」
先生
「リッチテキストとは、普通の文字列ではなく、色やサイズ、太字や斜体といった装飾がついた文字列のことです。たとえばLINEのメッセージで絵文字や色付きの文字を見たことがあるでしょう?それと同じようなイメージです。」
1. AttributedStringとNSAttributedStringとは?
AttributedStringはSwiftで新しく導入された仕組みで、直感的にリッチテキストを扱うことができます。一方、NSAttributedStringは昔から使われている方法で、UIKitやAppKitでも幅広く利用されています。
どちらも「文字列に属性(色やフォントなどの情報)を持たせる」ための仕組みです。初心者でも理解しやすいように、まずはAttributedStringから見ていきましょう。
2. AttributedStringの基本
SwiftのAttributedStringを使えば、簡単に部分的に装飾を加えられます。次の例では、名前の部分だけ赤くしています。
import SwiftUI
var text: AttributedString {
var message = AttributedString("こんにちは、Taroさん!")
if let range = message.range(of: "Taro") {
message[range].foregroundColor = .red
message[range].font = .boldSystemFont(ofSize: 18)
}
return message
}
これをSwiftUIのTextに渡せば、赤くて太字の「Taro」が表示されます。
3. 複数の装飾を組み合わせる
文字色だけでなく、フォントサイズや斜体、下線なども自由に組み合わせられます。
var message = AttributedString("重要なお知らせです!")
if let range = message.range(of: "重要") {
message[range].foregroundColor = .blue
message[range].font = .boldSystemFont(ofSize: 20)
message[range].underlineStyle = .single
}
「重要」の部分が青色で太字、さらに下線付きになります。ニュースアプリやお知らせ画面などでよく使われる表現です。
4. NSAttributedStringの基本
UIKitや古い環境では、NSAttributedStringを使います。こちらも考え方は同じで、属性を指定してリッチテキストを作ります。
import UIKit
let attributes: [NSAttributedString.Key: Any] = [
.foregroundColor: UIColor.green,
.font: UIFont.systemFont(ofSize: 18, weight: .bold)
]
let attributedText = NSAttributedString(string: "Hello Swift!", attributes: attributes)
この例では「Hello Swift!」という文字列が緑色で太字になります。これをUILabelに設定すれば色付きで表示されます。
5. 部分的に装飾するNSAttributedString
部分的に違う装飾をしたい場合は、NSMutableAttributedStringを使います。
let text = NSMutableAttributedString(string: "Swiftでリッチテキスト")
text.addAttribute(.foregroundColor, value: UIColor.red, range: NSRange(location: 0, length: 5))
text.addAttribute(.font, value: UIFont.boldSystemFont(ofSize: 20), range: NSRange(location: 6, length: 5))
これで「Swift」が赤色、「リッチテキスト」が太字になります。アプリ内で重要な単語を強調したいときに便利です。
6. AttributedStringとNSAttributedStringの違い
両者の違いをまとめると次のようになります。
- AttributedString:SwiftUIに最適化された新しい方法。コードが直感的で書きやすい。
- NSAttributedString:UIKitや古いAPIで広く使われる方法。対応範囲が広い。
SwiftUIを使う場合はAttributedString、UIKitを使う場合はNSAttributedStringを選ぶと良いでしょう。
7. リッチテキストが役立つ場面
リッチテキストは、アプリの見やすさやユーザー体験を向上させるために欠かせません。例えば次のような場面で役立ちます。
- チャットアプリでユーザー名を色付きにする
- エラーメッセージの一部を赤くして強調する
- ニュースアプリで見出しを太字にする
- イベントの日時だけを大きく表示する
初心者のうちからこうした装飾を学んでおくと、アプリの完成度がぐっと上がります。
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
「iPhoneアプリを作りたいけれど、Macを持っていないから諦めている」そんな方のための画期的な入門講座です。実は、プログラミングの本質を学ぶのに高価な機材は必要ありません。本講座では、Windowsパソコンを使用し、クラウド環境を活用してAppleの最新言語Swift(スウィフト)の基礎を最短距離でマスターします。
Windowsで実現する開発環境
【つくるもの】
ブラウザ上で動作する「スマート・計算ツール」や「データ判定プログラム」をゼロから作成します。変数の扱いや条件分岐など、iPhoneアプリの内部で動くロジックを自分の手で構築する感動を体験してください。
【開発環境】
ブラウザだけでSwiftが動くプロ仕様のオンラインエディタ(Replit等)を使用します。面倒な設定は一切不要。今あるWindows PCで、プロのエンジニアと同じコードを書き始められます。
この60分で得られる3つの理解
OSの壁を越え、クラウドを活用してスマートに学習を開始する「現代的な開発スタイル」を習得します。
iPhoneアプリ特有のデータの扱い方や、Appleが推奨する「安全で美しいコード」の書き方を学びます。
将来的にiOSエンジニアとして副業・転職するために必要な準備や、Mac選びのポイントを伝授します。
※本講座は、将来的にiPhoneアプリ開発で収益化や転職を目指したい未経験者のためのエントリー講座です。マンツーマン形式により、Windows環境ならではの疑問にもその場でお答えし、あなたの理解度に合わせて進行します。
Windowsで始めるiPhoneアプリ開発入門