*

NSAttributedStringをローカライズする方法

公開日: : 最終更新日:2016/02/05 Tips ,

NSAttributedStringをLocalizeするうまい方法はないものかと探したら、これが手軽かなと思った方法に出会ったのでご紹介したいと思います。NSAttributedStringの元になるStringをHTMLで記述する方法の応用で、元になるHTML文をLocalizeすることでAttributedStringもローカライズされるという寸法です。


ソースコードの基幹はこんな塩梅で、This is a pen.というテキストを得ることができます。

NSString* string = "This is a <b style='color:red'>pen</b>.";
NSAttributedString* attrString = [[NSAttributedString alloc] initWithData:[string dataUsingEncoding : NSUnicodeStringEncoding]
                                                                  options:@{NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType}
                                                       documentAttributes:nil
                                                                    error:nil];

こうやって得たAttributedStringをUILabelに入れると、英字部分(今回の場合、全体に見えますが)のUIFontの設定が崩れるため、その設定をきちんとやりなおす(IB設定を使わないと割り切る)必要があるのでその点は注意が必要になると思います。

関連記事

UITableViewCellのロングタップ

UITableViewCellをロングタップしたときに、タップされたセルを認識しつつメニューを出した

記事を読む

Xcode8で余計なログを抑制する

Xcode8に更新してから、妙にログが増えたので、NSLogで明示したのと実行時エラー以外のログを吐

記事を読む

UISegmentedControlに見栄え良く背景色を設定する

UISegmentedControlをiOS7で使おうとすると、基本の背景色が「透明」になりますが、

記事を読む

AVAudioPlayerの初回再生遅延

ちょっとした効果音の再生にAVAudioPlayerを使っているのですが、どうも初回の効果音ロードの

記事を読む

コードでiPhone6 Plusを識別する簡単な方法

表題の通り、コードでiPhone6 Plusを識別する簡単な方法です。 iPhone6 Plu

記事を読む

viewDidLoadとviewDidLayoutSubviewsのタイミング

真実の記事にある「コードでiPhone6を識別する」話とほんのちょっとだけ繋がっている話で、view

記事を読む

”No Scheme”になってしまった場合の対応

知人がXcodeで突然「No Scheme」表示になってRunするターゲットとデバイスが選択できない

記事を読む

メソッドの呼び出し元を調べる

特定のメソッドに関して、そのメソッドをコールしているメソッド群を調べるための手順。 (1)調べたい

記事を読む

iOS9でURLスキームを登録する

私事ですが、iOS8から対応はしたいということで検証用に使っている自分のiPhoneもiOS8でがん

記事を読む

CoreDataのソートとsectionNameKeyPathの関係

CoreDataをフェッチするときに、indexPathのsectionにできるsectionNam

記事を読む

Xcode10からのimage literal / color literalの指定方法

アセットにあるUIImageの直接指定が可能なImage litera

Xcode11でのバージョン番号の取得方法

Xcode11になってバージョン番号をスクリプトから得て自動で更新する

GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法

情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初

画面回転をしたあとに、UITextViewの先頭を表示する

回転によりサイズが可変するUITextViewで、縦向き(ポートレイト

NXDrawKitを導入してみる

ACEDrawingViewがObj-Cで書かれていて、いまいちメンテ

→もっと見る

    PAGE TOP ↑