iOS开发之富文本(oc与swift两种都有)

  • Post author:
  • Post category:其他



iOS开发中常会遇到让Label的文字多样化显示,比如不同的颜色,不同的字体,这就要用到所谓的富文本,下面我已经把方法简单封了一下,建议大家放到单例中调用,swift版直接拖到最后面看

根据需求使用第一个或第二个方法

/**


*

多样性字符串处理

*

*

@param

original

原始字符串

*

@param

conversion

需转换的字符串

*

@param

font

字体

*

@param

color

颜色

*

*

@return


转换好的字符串

*/

– (

NSMutableAttributedString

*)diverseStringOriginalStr:(

NSString

*)original conversionStr:(

NSString

*)conversion withFont:(

UIFont

*)font withColor:(

UIColor

*)color

{

original = [

NSString


nullToString

:original]; //非空判断,可以删了,记得不要传空就行

conversion = [

NSString


nullToString

:conversion];


//非空判断,可以删了,记得不要传空就行



NSMutableAttributedString

* str = [[

NSMutableAttributedString



alloc


]


initWithString


:original];


NSRange

range = [original

rangeOfString

:conversion];


[str

addAttribute

:

NSForegroundColorAttributeName


value

:color

range

:range];


[str

addAttribute

:

NSFontAttributeName


value

:font

range

:range];


return

str;

}



使用示例


self


.


contentLabel


.

attributedText

= [self



diverseStringOriginalStr

:


@”


招商银行


(


尾号


1802


储蓄卡


)”



conversionStr

:


@”(


尾号


1802


储蓄卡


)”



withFont

:[


UIFont



systemFontOfSize

:


14


]

withColor

:


[


UIColor



redColor

]


]

效果


注意:调用此方法前,必须先创建好Label,并且设置好了默认的字体与颜色(就是上图中黑色的字部分)

/**


*

多样性字符串处理

(

批量处理

)

*

*

@param

original

原始字符串

*

@param

conversion

需转换的字符串数组

*

@param

font

字体

*

@param

color

颜色

*

*

@return


转换好的字符串

*/

– (

NSMutableAttributedString

*)diverseStringOriginalStr:(

NSString

*)original conversionStr:(

NSString

*)conversion withFont:(

UIFont

*)font withColor:(

UIColor

*)color

{

original = [

NSString


nullToString

:original];

conversion = [

NSString


nullToString

:conversion];



NSMutableAttributedString

* str = [[

NSMutableAttributedString



alloc


]


initWithString


:original];


NSRange

range = [original

rangeOfString

:conversion];


[str

addAttribute

:

NSForegroundColorAttributeName


value

:color

range

:range];


[str

addAttribute

:

NSFontAttributeName


value

:font

range

:range];


return

str;

}


swift版

/**

*

多样性字符串处理

*

*  @param original

原始字符串

*  @param conversion

需转换的字符串

*  @param font

字体

*  @param color

颜色

*

*  @return

转换好的字符串

*/


func

diverseStringOriginalStr(original :

String

,conversionStr conversion :

String

,withFont font :

UIFont

,withColor color :

UIColor

) ->

NSMutableAttributedString

{


let

range :

NSRange

= (original

as


NSString

).

rangeOfString

(conversion

as


String

)


let

str =

NSMutableAttributedString

(string: original

as


String

)

str.

addAttribute

(

NSForegroundColorAttributeName

, value: color, range: range)

str.

addAttribute

(

NSFontAttributeName

, value: font, range: range)


return

str

}


/**


*

多样性字符串处理

(

批量处理

)

*

*  @param original

原始字符串

*  @param conversion

需转换的字符串数组

*  @param font

字体

*  @param color

颜色

*

*  @return

转换好的字符串

*/


func

diverseStringOriginalStr(original :

String

,conversionStrArr conversionArr :

NSArray

,withFont font :

UIFont

,withColor color :

UIColor

) ->

NSMutableAttributedString

{


let

str =

NSMutableAttributedString

(string: original

as


String

)


for

subStr

in

conversionArr{


let

range :

NSRange

= (original

as


NSString

).

rangeOfString

(subStr

as

!

String

)

str.

addAttribute

(

NSForegroundColorAttributeName

, value: color, range: range)

str.

addAttribute

(

NSFontAttributeName

, value: font, range: range)

}


return

str

}

使用示例


self

.

contentLabel

.

attributedText

=

self

.

diverseStringOriginalStr

(




招商银行


(


尾号


1802


储蓄卡


)”

, conversionStr:

“(


尾号


1802


储蓄卡


)”

, withFont:

UIFont

.

systemFontOfSize

(

14

), withColor:

UIColor

.

redColor

())

效果




注意:调用此方法前,必须先创建好Label,并且设置好了默认的字体与颜色(就是上图中黑色的字部分)







批量处理的示例



let

arr =

NSArray

(objects:

“5,000,”

,









)


self

.

moneyLabel

.

attributedText

=

DataProcessing

.sharedManager.

diverseStringOriginalStr

(

“5,000,000







, conversionStrArr: arr, withFont:

UIFont

.

systemFontOfSize

(

14

), withColor:

UIColor

(red:

255

/

255.0

, green:

93

/

255.0

, blue:

73

/

255.0

, alpha:

1.0

))

效果






版权声明:本文为w_shuiping原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。