網頁

2013年8月4日 星期日

iOS開發筆記 - TTTAttributedLabel的使用

最近對UILable有些需求:
  1. 有link點擊
  2. 若是電話號碼可以打電話
  3. 若是連結可以開網址
  4. 若是地圖可以開Apple Map
找到了個不錯的元件可以符合上述的需求:TTTAttributedLabel,下載點:mattt / TTTAttributedLabel

mattt / TTTAttributedLabel有蠻完整的範例,不過這邊還是紀錄一下。

Step 1:
COPY兩個檔案:TTTAttributedLabel.h及TTTAttributedLabel.m

Step 2:
加入CoreText.framework

Step 3(若專案本身是ARC不需要這步驟):
至Build Paases -> Compile Sources中找到TTTAttributedLabel.m加入-fobjc-arc

再來就可以使用了。以我自己的為例:

先將要使用這元件的ViewController或Class加上TTTAttributedLabelDelegate

電話號碼:
TTTAttributedLabel *tel = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(10, 10, 190, 21)];
tel.delegate = self;

if (tel.text != nil && ![tel.text isEqualToString:@""])  { 

    //電話號碼的範圍是整個字串

    [tel addLinkToPhoneNumber:tel.text withRange: [tel.text rangeOfString:tel.text] ];
}


開網址:
TTTAttributedLabel *webSite = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(10, 10, 190, 21)];
webSite.delegate = self;
if (webSite.text != nil && ![webSite.text isEqualToString:@""]) {
    //網址的範圍是整個字串
    NSURL *urlString = [[NSURL alloc] initWithString:[@"http://" stringByAppendingString: webSite.text]];
    [webSite addLinkToURL:urlString withRange:[webSite.text rangeOfString: webSite.text] ];
}

開Apple Map:
TTTAttributedLabel *addrLabel = [[TTTAttributedLabel alloc] initWithFrame:CGRectMake(10, 10, 190, 21)];
addrLabel.delegate = self;
if (addrLabel.text != nil && ![addrLabel.text isEqualToString:@""]) {
    //地址的範圍是整個字串
    NSDictionary *addr = @{@"addr": addrLabel.text};
    [addrLabel addLinkToAddress:addr withRange: [addrLabel.text rangeOfString: addrLabel.text] ];
}


還蠻簡單易用。

沒有留言:

張貼留言