置專(zhuān)屬顏色與字體)
如何用 STTweetLabel 定制樣式為 #話題、用戶和鏈接設(shè)置專(zhuān)屬顏色與字體【免費(fèi)下載鏈接】STTweetLabelDeprecated - A UILabel with #hashtag handle and links tappable項(xiàng)目地址: https://gitcode.com/gh_mirrors/st/STTweetLabelSTTweetLabel 是一個(gè)基于 UILabel 的 iOS 開(kāi)源文本標(biāo)簽組件它能夠自動(dòng)識(shí)別文本中的#話題標(biāo)簽、用戶提及和 URL 鏈接并讓它們變成可點(diǎn)擊的熱詞。更強(qiáng)大的是你可以通過(guò)簡(jiǎn)單的 API 為這三類(lèi)熱詞分別定制專(zhuān)屬的顏色與字體讓文字樣式與你的 App 設(shè)計(jì)風(fēng)格完美統(tǒng)一。雖然該項(xiàng)目已標(biāo)記為 Deprecated不再維護(hù)但它的源碼簡(jiǎn)潔、API 清晰至今仍是 iOS 新手學(xué)習(xí)文本樣式定制與正則識(shí)別的絕佳范例。STTweetLabel 是什么為什么值得一試STTweetLabel 的本質(zhì)是一個(gè)UILabel 增強(qiáng)控件與系統(tǒng)自帶 UILabel 用法幾乎一致卻額外擁有三項(xiàng)能力? 自動(dòng)識(shí)別文本中的用戶、#話題和鏈接無(wú)需手動(dòng)拆分字符串? 三種熱詞可分別設(shè)置顏色與字體視覺(jué)層次一目了然? 通過(guò)detectionBlock回調(diào)捕獲點(diǎn)擊事件輕松實(shí)現(xiàn)跳轉(zhuǎn)、彈窗等交互它基于 iOS 7 的 TextKit 框架實(shí)現(xiàn)核心代碼只有 STTweetLabel.h 與 STTweetLabel.m 兩個(gè)文件非常適合通讀學(xué)習(xí)。最快配置方法CocoaPods 一鍵安裝如果你使用 CocoaPods 管理依賴(lài)在 Podfile 中添加一行即可pod STTweetLabel然后執(zhí)行pod install并在需要使用的文件中導(dǎo)入頭文件#import STTweetLabel.h若想直接運(yùn)行官方示例工程可以 clone 整個(gè)倉(cāng)庫(kù)查看 Demogit clone https://gitcode.com/gh_mirrors/st/STTweetLabel其中示例代碼位于 STViewController.m運(yùn)行后即可看到話題、用戶與鏈接三種樣式同時(shí)展示的效果。三行代碼快速上手讓文本自動(dòng)可點(diǎn)擊STTweetLabel 的使用方式和 UILabel 幾乎一模一樣只需創(chuàng)建實(shí)例并設(shè)置textSTTweetLabel *tweetLabel [[STTweetLabel alloc] initWithFrame:CGRectMake(10, 60, 300, 160)]; tweetLabel.text 歡迎 小美 加入團(tuán)隊(duì)今天聊聊 #iOS開(kāi)發(fā) 和 #開(kāi)源項(xiàng)目詳情見(jiàn) https://example.com/guide; [self.view addSubview:tweetLabel];此時(shí)小美、#iOS開(kāi)發(fā)、鏈接 URL 會(huì)被自動(dòng)識(shí)別并渲染成各自的默認(rèn)樣式無(wú)需編寫(xiě)任何解析代碼。定制樣式核心setAttributes 方法詳解定制樣式是 STTweetLabel 最實(shí)用的功能它提供兩個(gè)方法分別控制全局文字和特定熱詞的外觀。了解三種熱詞類(lèi)型在動(dòng)手定制之前先認(rèn)識(shí) STTweetLabel.h 中定義的枚舉枚舉值含義默認(rèn)顏色STTweetHandle用戶紅色STTweetHashtag#話題淺灰色STTweetLink鏈接淡藍(lán)色設(shè)置全局文字樣式使用setAttributes:可以統(tǒng)一設(shè)置普通文本的字體與顏色[tweetLabel setAttributes:{ NSFontAttributeName: [UIFont systemFontOfSize:16.0], NSForegroundColorAttributeName: [UIColor darkGrayColor] }];為話題、用戶和鏈接分別定制專(zhuān)屬顏色與字體使用setAttributes:hotWord:可以針對(duì)某一類(lèi)熱詞單獨(dú)設(shè)置樣式這是本教程的核心操作// 為 #話題 設(shè)置醒目的藍(lán)色加粗 [tweetLabel setAttributes:{ NSForegroundColorAttributeName: [UIColor colorWithRed:0.0 green:0.48 blue:1.0 alpha:1.0], NSFontAttributeName: [UIFont boldSystemFontOfSize:16.0] } hotWord:STTweetHashtag]; // 為 用戶 設(shè)置橙色專(zhuān)屬色 [tweetLabel setAttributes:{ NSForegroundColorAttributeName: [UIColor orangeColor], NSFontAttributeName: [UIFont systemFontOfSize:16.0] } hotWord:STTweetHandle]; // 為鏈接設(shè)置紫色 [tweetLabel setAttributes:{ NSForegroundColorAttributeName: [UIColor purpleColor] } hotWord:STTweetLink];兩點(diǎn)溫馨提示未指定的屬性如字體會(huì)自動(dòng)沿用標(biāo)簽?zāi)J(rèn)值無(wú)需全部填寫(xiě)這兩個(gè)方法會(huì)刷新整個(gè)組件建議在初始化階段一次性設(shè)置好樣式避免重復(fù)刷新造成性能開(kāi)銷(xiāo)捕獲點(diǎn)擊事件detectionBlock 回調(diào)光有樣式還不夠讓熱詞真正可點(diǎn)擊需要實(shí)現(xiàn)detectionBlock?;卣{(diào)會(huì)返回點(diǎn)擊的熱詞類(lèi)型、文本內(nèi)容、協(xié)議和范圍[tweetLabel setDetectionBlock:^(STTweetHotWord hotWord, NSString *string, NSString *protocol, NSRange range) { if (hotWord STTweetLink) { NSLog(點(diǎn)擊鏈接%協(xié)議%, string, protocol); } else if (hotWord STTweetHashtag) { NSLog(點(diǎn)擊話題%, string); } else if (hotWord STTweetHandle) { NSLog(點(diǎn)擊用戶%, string); } }];配合這個(gè)回調(diào)你可以實(shí)現(xiàn)跳轉(zhuǎn)瀏覽器、打開(kāi)話題詳情頁(yè)等交互這也是 STTweetLabel 最典型的應(yīng)用場(chǎng)景。更多實(shí)用配置協(xié)議白名單、文字選擇與 RTL 支持除了樣式與點(diǎn)擊STTweetLabel 還提供了幾個(gè)貼心的開(kāi)關(guān)屬性validProtocols鏈接協(xié)議白名單默認(rèn)只識(shí)別http和https可自行擴(kuò)展textSelectable是否允許用戶選擇文本并復(fù)制默認(rèn)開(kāi)啟selectionColor文本選中時(shí)的背景高亮色leftToRight書(shū)寫(xiě)方向支持阿拉伯語(yǔ)等 RTL從右到左語(yǔ)言textAlignment文本對(duì)齊方式與 UILabel 一致例如限制只識(shí)別https鏈接tweetLabel.validProtocols [https];自動(dòng)計(jì)算高度的實(shí)用方法當(dāng)文本內(nèi)容不確定時(shí)可以用內(nèi)置方法計(jì)算完整展示所需的尺寸避免文字被截?cái)郈GSize size [tweetLabel suggestedFrameSizeToFitEntireStringConstrainedToWidth:300.0]; tweetLabel.frame CGRectMake(10, 60, size.width, size.height);這個(gè)方法會(huì)返回恰好容納全部?jī)?nèi)容的大小配合 Auto Layout 使用非常順手。常見(jiàn)問(wèn)題與小技巧樣式不生效請(qǐng)確認(rèn)setAttributes:hotWord:在設(shè)置text之后調(diào)用且不要在運(yùn)行時(shí)頻繁修改想修改默認(rèn)協(xié)議通過(guò)validProtocols屬性即可無(wú)需改動(dòng)源碼項(xiàng)目已 Deprecated不影響學(xué)習(xí)使用源碼邏輯在 STTweetLabel.m 中完整保留是理解 TextKit 富文本渲染的優(yōu)秀教材掌握以上方法后你就能用 STTweetLabel 輕松打造出層次分明、風(fēng)格統(tǒng)一的文本標(biāo)簽界面了。如果你正在尋找一款輕量級(jí)、可定制的 iOS 話題標(biāo)簽組件不妨在示例工程中動(dòng)手試一試吧【免費(fèi)下載鏈接】STTweetLabelDeprecated - A UILabel with #hashtag handle and links tappable項(xiàng)目地址: https://gitcode.com/gh_mirrors/st/STTweetLabel創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考