対応iOSが6以上の場合
UILabelクラスのattributedTextプロパティが利用できるのでそれを使えば良い。
iOS5にも対応する場合、ライブラリを使う
- OHAttributedLabel
- TTTAttributedLabel
OHAttributedLabel
https://github.com/AliSoftware/OHAttributedLabel
使いやすいライブラリだが、日本語の場合行間がおかしくなる問題が起こった。
http://eikatou.net/blog/2012/09/2019/
この辺りを参照。ここの解決策をやっても私の場合はうまくいかなかった。
TTTAttributedLabelを使ったほうが良い気がする。
TTTAttributedLabel
https://github.com/mattt/TTTAttributedLabel
利用してて特に気になる点はない。
行間は以下のような感じで調整できる
label.lineSpacing = 2;
リンクは
label.enabledTextCheckingTypes = NSTextCheckingTypeLink;
としておけば勝手にURL部分を青くしてくれるので、あとは
label.delegate = self;
と delegate を指定し、指定したクラスに TTTAttributedLabelDelegate を設定した後
- (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url {
[[UIApplication sharedApplication] openURL:url];
}
上記のメソッドを定義しておくとリンクがクリックされたときに呼ばれる。