屬性字是什么
就是帶有屬性的字符串病附,可以為整個字符串添加各種格式效果等也可以為部分添加沸毁。
如果使用
使用 NSAttributedString
或者 NSMutableAttributedString
來構建一個屬性字對象
這兩兄弟的區(qū)別是NSAttributedString
一旦完成初始化就不能再后續(xù)中更改各種屬性了峰髓。NSMutableAttributedString
可以傻寂,后者標識可變的
為什么要用
屬性字是我們平時開發(fā)普遍的不能再普遍的需求,設計為了好看或者強調某幾個文字就會對一行文字中的幾個或者幾段使用不同的字體儿普、顏色,有的還要使用下劃線掷倔,中劃線等眉孩,有的為了表示這里很特殊,會加一個小圖標表示疑問 警告 或者其他提示性含義
為什么要簡單點
系統(tǒng)屬性字的用法真的很麻煩勒葱,而且也不好記浪汪,有些難記的總是在使用的時候還要去查,而且按照下標去數(shù)第幾個然后去賦值屬性簡直很low凛虽,代碼又寫一大堆難于維護死遭。
記得之前有寫過一篇文章 Swift 屬性字怎么玩,當時對屬性字的幾個簡單的屬性進行了封裝,并自定義了一個操作符凯旋,用鏈式加函數(shù)式的方式去寫屬性字呀潭,覺得很酷,但是那個東西并不完善至非,而且也不夠簡單钠署,而且函數(shù)式和自定義操作符也完全沒必要。所以就寫了個比較完善和實用的荒椭。
有哪些功能
目前支持以下功能谐鼎,日常項目中使用的功能基本覆蓋。
- 字體
- 文字顏色
- 背景色
- 下劃線
- 下劃線顏色
- 行間距
- 文字間距
- 描邊顏色
- 描邊寬度
- 中劃線
- 中劃線顏色
- 設置圖片
怎么使用
當然要使用起來非常的簡單趣惠,再簡單了狸棍。純鏈式調用, + 號連接不同屬性字 味悄。圖片可以調整位置大小草戈。如果要給整段為本加屬性比如行間距等,也可以用括號括起來侍瑟,支持括號運算猾瘸。
label1.attributedText = "屬性字"
.attribute()
.fontSize(18)
.foreColor(UIColor.blue)
.underLine(.styleSingle)
.underLineColor(UIColor.black)
+
(
" 測試一下"
.attribute()
.font(UIFont.boldSystemFont(ofSize: 20))
.foreColor(UIColor.red)
.underLine(.styleDouble)
.underLineColor(UIColor.blue)
+
" ¥".attribute()
.font(UIFont.boldSystemFont(ofSize: 23))
.foreColor(UIColor.black)
).lineSpace(5)
+
" 2000"
.attribute()
.fontSize(19)
.foreColor(UIColor.purple)
.backgroundColor(UIColor.lightGray)
.fontSpace(3.5)
+
" 描邊文字"
.attribute()
.fontSize(19)
.strokeColor(UIColor.blue)
.strokeWidth(3)
+
" 中劃線 "
.attribute()
.fontSize(17)
.strike(2)
.strikeColor(UIColor.darkGray)
+
"帶圖片提示的文本"
.attribute()
.fontSize(15).foreColor(UIColor.lightGray)
.picture( UIImage(named: "warning"), bounds: CGRect(x: 0, y: 0, width: 13, height: 13), index: 0)
源碼就鏈兩個Extension,非常的簡單粗暴丢习。但是用起來也是非常的舒服
屬性字點擊
我們經(jīng)常會需要在一段提示的某幾個文字上加上點擊事件牵触,要么跳轉頁面,要么彈出提示咐低,并非識別連接或者@someone揽思, 微信聊天中經(jīng)常會提示,帶有藍色可點擊文字见擦。
但是這個普普通通的需求钉汗,卻并不好實現(xiàn)羹令,系統(tǒng)的TextView可以自定識別連接和電話號碼但是不能識別自定義的屬性字。
so 损痰, 這里我們也實現(xiàn)了一個可以很easy的使用給屬性字加點擊事件的TextView --- EZTextView
來看一下效果福侈。
使用方法依舊是鏈式調用,記得先remove
textView
.removeAllAttribute()
.appendAttributedText("溫馨提示卢未,謹防詐騙肪凛,跟您對話的可能是個騙子!A缮纭伟墙! "
.attribute()
.foreColor(UIColor.gray)
.fontSize(15)
.toEz())
.appendAttributedText(" 拉黑 ".attribute()
.foreColor(UIColor.blue)
.font(UIFont.boldSystemFont(ofSize: 17))
.toEz()
.addAction{
print("------這里是拉黑系統(tǒng)---------")
})
.appendAttributedText(" 舉報 ".attribute()
.foreColor(UIColor.blue)
.font(UIFont.boldSystemFont(ofSize: 17))
.toEz()
.addAction{
print("------這里是舉報系統(tǒng)---------")
})
因為是文本顯示所以最好先設置下屬性
textView.isEditable = false
textView.isScrollEnabled = false
這樣,以后再也不用擔心文字里那塊需要點擊了滴铅。
如何引入
GitHub 連接: https://github.com/smalldu/EasyAtrribute
支持cocoaPods
備注
一個非常輕量的小工具類~ 希望大家可以喜歡