★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-qvajeacz-dc.html
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
目錄:[Swift]通天遁地Swiftios
本文將演示動態標籤的使用,它容許用戶在標籤上進行互動操做。git
點擊【Podfile】,查看安裝配置文件。github
1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'ActiveLabel' 7 end
根據配置文件的內容,進行動態標籤的安裝,正則表達式
而後點擊【DemoApp.xcworkspace】項目文件,打開已經安裝動態標籤的空白項目。swift
在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】瀏覽器
如今編寫代碼,在項目中使用剛剛安裝的動態標籤。微信
1 import UIKit 2 //在類文件中引入動態標籤 3 import ActiveLabel 4 5 class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 //第一種動態標籤。 11 activeLabel() 12 //第二種更強大的動態標籤 13 customizeLabel() 14 } 15 16 //添加一個方法,用來製做動態標籤示例 17 func activeLabel() 18 { 19 //建立一個原點在(0,0),寬度和高度都是320的標籤。 20 let label = ActiveLabel(frame: CGRect(x: 0, y: 0, width: 320, height: 320)) 21 22 //動態標籤是對普通標籤的擴展,因此一樣擁有普通標籤視圖的各類屬性。 23 //在此設置標籤視圖不限制行數。 24 label.numberOfLines = 0 25 //而後設置動態標籤的交互屬性, 26 //包含:主題標籤、說起和網址等類型。 27 //也就是說這些內容在標籤視圖中是可被點擊的。 28 label.enabledTypes = [.mention, .hashtag, .url] 29 //設置動態標籤的文字內容, 30 //內容包含:一個主題標籤 + 一個提交符號 31 //兩個符號和它們後面的文字內容將可被點擊。 32 label.text = "This is a post with #hashtags and a @userhandle." 33 //設置文字的顏色爲黑色 34 label.textColor = .black 35 //給主題標籤添加交互事件, 36 //當用戶點擊該內容時,在控制檯輸出日誌信息, 37 label.handleHashtagTap 38 { 39 hashtag in 40 //日誌信息包含被點擊的標籤內容。 41 print("Success. You just tapped the \(hashtag) hashtag") 42 } 43 44 //將標籤視圖添加到當前視圖控制器的根視圖 45 self.view.addSubview(label) 46 //設置根視圖的背景顏色爲橙色 47 self.view.backgroundColor = UIColor.orange 48 } 49 50 //建立更增強大的動態標籤 51 //添加一個方法,在這個新方法中,建立動態標籤。 52 func customizeLabel() 53 { 54 //初始化一個指定顯示區域的動態標籤 55 let label = ActiveLabel(frame: CGRect(x: 20, y: 40, width: view.frame.width - 40, height: 300)) 56 //將該動態標籤添加到當前視圖控制器的根視圖 57 view.addSubview(label) 58 59 //經過正則表達式建立自定義的動做類型 60 let customType = ActiveType.custom(pattern: "\\sare\\b") 61 let customType2 = ActiveType.custom(pattern: "\\ssupports\\b") 62 63 //將自定義的動做類型,添加到動態標籤所支持的類型列表中。 64 label.enabledTypes.append(customType) 65 label.enabledTypes.append(customType2) 66 67 //設置網址文字的最大長度,當超出該長度的數值時,將截取網址並在尾部添加省略號。 68 label.urlMaximumLength = 31 69 70 //接着對動態標籤的外觀屬性進行自定義設置 71 label.customize 72 { 73 label in 74 //設置動態標籤的文字內容,文字內容中包含了各類動態類型 75 label.text = "This is a post with #multiple #hashtags and a @userhandle. Links are also supported like" + 76 " this one: https://www.cnblogs.com/strengthen/. Now it also supports custom patterns -> are\n\n" + 77 "Let's trim a long link: \nhttps://www.cnblogs.com/strengthen/p/10022619.html" 78 //設置標籤的行數 79 label.numberOfLines = 0 80 //設置標籤的行間距 81 label.lineSpacing = 4 82 83 //設置動態標籤對象的文字顏色 84 label.textColor = UIColor(red: 102.0/255, green: 117.0/255, blue: 127.0/255, alpha: 1) 85 //設置動態標籤對象的主題標籤文字的顏色 86 label.hashtagColor = UIColor(red: 85.0/255, green: 172.0/255, blue: 238.0/255, alpha: 1) 87 //設置動態標籤的說起文字的顏色 88 label.mentionColor = UIColor(red: 238.0/255, green: 85.0/255, blue: 96.0/255, alpha: 1) 89 //設置動態標籤的網址文字的顏色 90 label.URLColor = UIColor(red: 85.0/255, green: 238.0/255, blue: 151.0/255, alpha: 1) 91 //設置動態標籤對象的網址被選中時的顏色 92 label.URLSelectedColor = UIColor(red: 82.0/255, green: 190.0/255, blue: 41.0/255, alpha: 1) 93 94 //設置當用戶點擊動態標籤中的主題標籤或說起文字時,將彈出提示框,顯示相應內容 95 label.handleMentionTap { self.alert("Mention", message: $0) } 96 label.handleHashtagTap { self.alert("Hashtag", message: $0) } 97 98 //添加網址的點擊事件 99 label.handleURLTap 100 { 101 //得到網址對象 102 let url = URL(string: $0.absoluteString) 103 //調用應用程序對象,在瀏覽器中打開該網址 104 UIApplication.shared.openURL(url!) 105 } 106 107 //設置動態標籤的第一種自定義動態類型的顏色 108 label.customColor[customType] = UIColor.purple 109 //和自定義類型被選中時的顏色 110 label.customSelectedColor[customType] = UIColor.green 111 //設置動態標籤的第二種自定義動態類型的顏色 112 label.customColor[customType2] = UIColor.magenta 113 //和自定義類型被選中時的顏色 114 label.customSelectedColor[customType2] = UIColor.green 115 116 //給兩個自定義的動態類型添加點擊事件, 117 //當用戶點擊時,將彈出提示框,顯示相應的內容 118 label.handleCustomTap(for: customType) { self.alert("Custom type", message: $0) } 119 label.handleCustomTap(for: customType2) { self.alert("Custom type", message: $0) } 120 } 121 } 122 123 //添加一個方法,用來響應點擊事件 124 func alert(_ title: String, message: String) 125 { 126 //建立一個警告彈出窗口,並設置彈出窗口的標題、信息和樣式等屬性 127 let vc = UIAlertController(title: title, message: message, preferredStyle: UIAlertController.Style.alert) 128 //給彈出窗口添加一個按鈕,當點擊該按鈕時,關閉彈出窗口 129 vc.addAction(UIAlertAction(title: "Ok", style: .cancel, handler: nil)) 130 131 //在當前的視圖控制器中,以模態的方式彈出窗口。 132 present(vc, animated: true, completion: nil) 133 } 134 135 override func didReceiveMemoryWarning() { 136 super.didReceiveMemoryWarning() 137 // Dispose of any resources that can be recreated. 138 } 139 }