一句代碼搞定文字變色缴守、字體大小改變葬毫、改變字體間距、行間距 等

需求背景

需求1: 項目中有多個收貨地址, 當其中的收貨地址為默認地址的時候. 如下圖

需求1

需求2: 項目中金額款項字體顏色變紅

需求2

這時候用兩個UILbl肯定是不合適的, 需要使用富文本屬性修改, 考慮到項目中這種使用場景比較多, 所以為UILbl新增一個分類.

分類

UILabel+Extension.h

/**
 * 富文本應用:  變色, 改變字體大小
 */
- (void)changeLblFont:(float)font textColor:(UIColor *)textColor range: (NSRange)range;

UILabel+Extension.m

- (void)changeLblFont:(float)font textColor:(UIColor *)textColor range: (NSRange)range{
    
    if (self.text) {
        
        // 富文本變色 NSForegroundColorAttributeName
        NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:self.text];
        [AttributedStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:font] range:range];
        [AttributedStr addAttribute:NSForegroundColorAttributeName value:textColor range:range];
        self.attributedText = AttributedStr;
    }
}

使用

  • 需求一:
[self.addressLbl changeLblFont:12 textColor:kRedTextColor range:NSMakeRange(0, 6)];
  • 需求二:
提交成功:
[self.successLbl changeLblFont:15 textColor:kRedTextColor range:NSMakeRange(self.successLbl.text.length - 5, 5)];

金額字體變紅:
[self.promptLbl changeLblFont:12 textColor:kRedTextColor range:NSMakeRange(self.promptLbl.text.length - str.length - 1, str.length)];

拓展

考慮到項目中其他對UILbl進行的操作: 改變字體間距屡穗、改變行間距贴捡、

  • .h
/**
 *  改變行間距  類方法
 */
+ (void)changeLineSpaceForLabel:(UILabel *)label WithSpace:(float)space textAlignment:(NSTextAlignment)textAlignment;

/**
 *  改變行間距
 */
- (void)changeLineSpaceForLabel:(float)space textAlignment:(NSTextAlignment)textAlignment;

/**
 *  改變字間距  類方法
 */
+ (void)changeWordSpaceForLabel:(UILabel *)label WithSpace:(float)space textAlignment:(NSTextAlignment)textAlignment;

/**
 *  改變字間距
 */
-(void)changeWordSpaceForLabel:(float)space textAlignment:(NSTextAlignment)textAlignment;

/**
 *  改變行間距和字間距  類方法
 */
+ (void)changeSpaceForLabel:(UILabel *)label withLineSpace:(float)lineSpace WordSpace:(float)wordSpace textAlignment:(NSTextAlignment)textAlignment;

/**
 *  改變行間距和字間距
 */
- (void)changeSpaceForLabel:(float)lineSpace WordSpace:(float)wordSpace textAlignment:(NSTextAlignment)textAlignment;
  • .m
/**
 *  改變行間距  類方法
 */
+ (void)changeLineSpaceForLabel:(UILabel *)label WithSpace:(float)space textAlignment:(NSTextAlignment)textAlignment {
    
    if (label.text) {
        
        NSString *labelText = label.text;
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText];
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        [paragraphStyle setLineSpacing:space];
        [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
        label.attributedText = attributedString;
        [label sizeToFit];
        label.textAlignment = textAlignment;
    }

}

/**
 *  改變行間距
 */
- (void)changeLineSpaceForLabel:(float)space textAlignment:(NSTextAlignment)textAlignment{
    
    if (self.text) {
        
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:self.text];
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        [paragraphStyle setLineSpacing:space];
        [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [self.text length])];
        self.attributedText = attributedString;
        [self sizeToFit];
        self.textAlignment = textAlignment;
    }
 
}


/**
 *  改變字間距  類方法
 */
+ (void)changeWordSpaceForLabel:(UILabel *)label WithSpace:(float)space textAlignment:(NSTextAlignment)textAlignment{
    
    if (label.text) {

        NSString *labelText = label.text;
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText attributes:@{NSKernAttributeName:@(space)}];
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
        label.attributedText = attributedString;
        [label sizeToFit];
        label.textAlignment = textAlignment;
    }
    
}

/**
 *  改變字間距
 */
-(void)changeWordSpaceForLabel:(float)space textAlignment:(NSTextAlignment)textAlignment{
    
    if (self.text) {
        
        // 取值為NSNumber對象(整數(shù)),負值間距變窄村砂,正值間距變寬
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:self.text attributes:@{NSKernAttributeName:@(space)}];
        
        self.attributedText = attributedString;
        [self sizeToFit];
        self.textAlignment = textAlignment;
    }
    
}

/**
 *  改變行間距和字間距  類方法
 */
+ (void)changeSpaceForLabel:(UILabel *)label withLineSpace:(float)lineSpace WordSpace:(float)wordSpace textAlignment:(NSTextAlignment)textAlignment{
    
    if (label.text) {
        
        NSString *labelText = label.text;
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText attributes:@{NSKernAttributeName:@(wordSpace)}];
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        [paragraphStyle setLineSpacing:lineSpace];
        [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
        label.attributedText = attributedString;
        [label sizeToFit];
        label.textAlignment = textAlignment;
    }

}

/**
 *  改變行間距和字間距
 */
- (void)changeSpaceForLabel:(float)lineSpace WordSpace:(float)wordSpace textAlignment:(NSTextAlignment)textAlignment{
    
    if (self.text) {
        
        NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:self.text attributes:@{NSKernAttributeName:@(wordSpace)}];
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        [paragraphStyle setLineSpacing:lineSpace];
        [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [self.text length])];
        self.attributedText = attributedString;
        [self sizeToFit];
        self.textAlignment = textAlignment;
    }
    
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烂斋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子础废,更是在濱河造成了極大的恐慌汛骂,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件色迂,死亡現(xiàn)場離奇詭異香缺,居然都是意外死亡手销,警方通過查閱死者的電腦和手機歇僧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人诈悍,你說我怎么就攤上這事祸轮。” “怎么了侥钳?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵适袜,是天一觀的道長。 經(jīng)常有香客問我舷夺,道長苦酱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任给猾,我火速辦了婚禮疫萤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘敢伸。我一直安慰自己扯饶,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布池颈。 她就那樣靜靜地躺著尾序,像睡著了一般。 火紅的嫁衣襯著肌膚如雪躯砰。 梳的紋絲不亂的頭發(fā)上每币,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音琢歇,去河邊找鬼脯爪。 笑死,一個胖子當著我的面吹牛矿微,可吹牛的內(nèi)容都是我干的痕慢。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼涌矢,長吁一口氣:“原來是場噩夢啊……” “哼掖举!你這毒婦竟也來了帐萎?” 一聲冷哼從身側(cè)響起仪芒,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎有缆,沒想到半個月后名秀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體励负,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年匕得,在試婚紗的時候發(fā)現(xiàn)自己被綠了继榆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巾表。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖略吨,靈堂內(nèi)的尸體忽然破棺而出集币,到底是詐尸還是另有隱情,我是刑警寧澤翠忠,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布鞠苟,位于F島的核電站,受9級特大地震影響秽之,放射性物質(zhì)發(fā)生泄漏当娱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一考榨、第九天 我趴在偏房一處隱蔽的房頂上張望趾访。 院中可真熱鬧,春花似錦董虱、人聲如沸扼鞋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽云头。三九已至,卻和暖如春淫半,著一層夾襖步出監(jiān)牢的瞬間溃槐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工科吭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留昏滴,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓对人,卻偏偏與公主長得像谣殊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子牺弄,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫姻几、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,024評論 4 62
  • Swift版本點擊這里歡迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh閱讀 25,289評論 7 249
  • 太陽還沒醒轉(zhuǎn)混萝,街角的一叢木槿開的熱烈,粉紫的花瓣兒重重又疊疊祥诽,像不像小女孩剛剛套上了新舞裙,鮮格格轉(zhuǎn)個圈兒瓮恭,裙擺嘩...
    初照晨閱讀 236評論 0 0
  • 從十一月中休學算起的話雄坪,到現(xiàn)在是十個月,差點一年屯蹦。十一月末到十二月我留在北京维哈,見了一些人看了一些展,辦理手續(xù)整理行...
    Leonaxixi閱讀 280評論 0 0