実装
import SwiftUI
struct HomeView: View {
@State private var input: String = ""
@State private var spelledOut: String = ""
var body: some View {
VStack(spacing: 32) {
TextField("Enter a number", text: $input)
.keyboardType(.numberPad)
.font(.system(size: 24))
.padding()
.background(Color(.systemGray6))
.cornerRadius(12)
.padding(.horizontal)
.onChange(of: input) {
spelledOut = formatNumberAsWords(input)
}
Text(spelledOut)
.font(.title.italic())
.multilineTextAlignment(.center)
.padding()
Spacer()
}
.onAppear {
spelledOut = formatNumberAsWords(input)
}
}
private func formatNumberAsWords(_ input: String) -> String {
guard let number = Int(input) else { return "Invalid input" }
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .spellOut // 数値を単語に変換するスタイル
return numberFormatter.string(from: NSNumber(value: number)) ?? "Invalid input"
}
}
役立つ使い方
- 子ども向けアプリや教育アプリ
数字を英語の単語で表示すれば、数の勉強やリスニング練習にGOOD
- 会計アプリや領収書生成
金額を英語で表記したいとき(小切手やインボイスなど)に便利。
- アクセシビリティ対応
VoiceOver利用者のために、数字を単語で表示することで読み上げやすくなる。
- クイズ・ゲームアプリ
「この英単語は何の数字?」みたいな問題を作るのもGOOD
- 多言語対応アプリ
NumberFormatter
のロケールを切り替えれば、英語以外でも使える(例:中国語、スペイン語など)。