&tag(TTTAttributedLabel);
*目次 [#l97680f2]
#contents
*参考情報 [#r5dcb6eb]
-[[mattt/TTTAttributedLabel · GitHub:https://github.com/mattt/TTTAttributedLabel]]

*概要 [#h91f2d19]
-部分的にリンクを作ったり、文字や色を変えたりすることの出来るラベルコントロール。
-ARCを使っている。
*ダウンロード [#bb2b7239]
-git cloneを使う
 git clone https://github.com/mattt/TTTAttributedLabel.git

*サンプル [#f567488d]
-Example以下にiOS用のサンプルがある。
-テーブルビューのサンプル。AttributedTableViewCellが内部で、TTTAttributedLabelを使用している。
-セル中のリンクをクリックすればSafariで開くことができる。

*使用方法 [#q6a9beb7]
-文字の装飾を行いたいときは setText:afterInheritingLabelAttributesAndConfiguringWithBlockを使う。
#pre{{
TTTAttributedLabel *label = [[TTTAttributedLabel alloc] initWithFrame:CGRectZero];
label.font = [UIFont systemFontOfSize:14];
label.textColor = [UIColor darkGrayColor];
label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;

NSString *text = @"Lorem ipsum dolar sit amet";
[label setText:text afterInheritingLabelAttributesAndConfiguringWithBlock:^ NSMutableAttributedString *(NSMutableAttributedString *mutableAttributedString) {
  NSRange boldRange = [[mutableAttributedString string] rangeOfString:@"ipsum dolar" options:NSCaseInsensitiveSearch];
  NSRange strikeRange = [[mutableAttributedString string] rangeOfString:@"sit amet" options:NSCaseInsensitiveSearch];

  // Core Text APIs use C functions without a direct bridge to UIFont. See Apple's "Core Text Programming Guide" to learn how to configure string attributes.
  UIFont *boldSystemFont = [UIFont boldSystemFontOfSize:14];
  CTFontRef font = CTFontCreateWithName((CFStringRef)boldSystemFont.fontName, boldSystemFont.pointSize, NULL);
  if (font) {
    [mutableAttributedString addAttribute:(NSString *)kCTFontAttributeName value:(id)font range:boldRange];
    [mutableAttributedString addAttribute:@"TTTStrikeOutAttribute" value:[NSNumber numberWithBool:YES] range:strikeRange];
    CFRelease(font);
  }

  return mutableAttributedString;
}];
}}
-リンククリックを処理したい場合、addLinkToURLをつかう。
#pre{{

label.dataDetectorTypes = UIDataDetectorTypeAll; // Automatically detect links when the label text is subsequently changed
label.delegate = self; // Delegate methods are called when the user taps on a link (see `TTTAttributedLabelDelegate` protocol)

label.text = @"Fork me on GitHub! (http://github.com/mattt/TTTAttributedLabel/)"; // Repository URL will be automatically detected and linked

NSRange range = [label.text rangeOfString:@"me"];
[label addLinkToURL:[NSURL URLWithString:@"http://github.com/mattt/"] withRange:range]; // Embedd


}}

-任意の文字をリンクとして扱い、タップしたときの処理を行いたい場合action shcemeを使う([[iphone - UILabel - string as text and links - Stack Overflow:http://stackoverflow.com/questions/8839464/uilabel-string-as-text-and-links]])。
#pre{{
TTTAttributedLabel *tttLabel = <# create the label here #>;
NSString *labelText = @"Lost? Learn more.";
tttLabel.text = labelText;
NSRange r = [labelText rangeOfString:@"Learn more"]; 
[tttLabel addLinkToURL:[NSURL URLWithString:@"action:show-help"] withRange:r];

- (void)attributedLabel:(TTTAttributedLabel *)label didSelectLinkWithURL:(NSURL *)url {
    if ([[url scheme] hasPrefix:@"action"]) {
        if ([[url host] hasPrefix:@"show-help"]) {
            /* load help screen */
        } else if ([[url host] hasPrefix:@"show-settings"]) {
            /* load settings screen */
        }
    } else {
        /* deal with http links here */
    }
}
}}
*自作アプリへの組み込み [#o9178a47]
-TTAttributedLabel.h/mを追加するだけ。
-non-ARCプロジェクトの場合、Build PhasesでTTAttributedLabel.mをクリックし"-fobjc-arc"を追加する。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS