iOS更改字符串中特定字符大小

最近寫(xiě)項(xiàng)目,其中一個(gè)控件需要展示從后臺(tái)請(qǐng)求來(lái)的數(shù)據(jù),并做相應(yīng)的大小更改。

后臺(tái)請(qǐng)求得來(lái)的字符串:

NSString *str1 = @"12.00~13.00%";

NSString *str2 = @"14.00~15.00%";

NSString *str3 = @"16.00%";

需要顯示為圖1樣式

(圖1)

當(dāng)數(shù)據(jù)格式固定,數(shù)字穩(wěn)定在兩位數(shù)之間,基本的字符串操作就可以達(dá)到想要的效果:

NSString *numStr = @"12.00~13.00%";

NSString *numStr1 = [numStr stringByReplacingOccurrencesOfString:@".00" withString:@""];

NSString *numStr2 = [numStr1 stringByReplacingOccurrencesOfString:@"~" withString:@"% - "];

NSMutableAttributedString *numText=[[NSMutableAttributedString alloc]initWithString:numStr2 attributes:nil];

這樣簡(jiǎn)單根據(jù)“%”字符的index,可以通過(guò)計(jì)算給“%”設(shè)置font值:

[numText addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20] range:NSMakeRange(2, 1)];

[numText addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20] range:NSMakeRange(8, 1)];

// UILabel *circleivNumlab;

circleNumlable.attributedText= numText;

但是一旦請(qǐng)求得來(lái)的數(shù)字變化為個(gè)位數(shù),如7.5%時(shí),下標(biāo)發(fā)生變化,這樣的計(jì)算方法就會(huì)出問(wèn)題了。

因此,經(jīng)過(guò)重新思考,得來(lái)新的方法:

NSRange range1=NSMakeRange([self getSubStrNumFromStr:numText?WithLocation:YES], 1);

NSRange range2=NSMakeRange(numText.length-1, 1);

[numText addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20] range:NSMakeRange(range1, 1)];

[numText addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20] range:NSMakeRange(range2, 1)];

// UILabel *circleivNumlab;

circleNumlable.attributedText= numText;

- (NSInteger)getSubStrNumFromStr:(NSString *)str WithLocation:(BOOL)first

{

if (str.length>0) {

NSArray *nums=[str componentsSeparatedByString:@"% - "];

if (first && nums.count>0) {

return [[nums firstObject] length];

}else if (first==NO && nums.count==2){

return? [[[[nums lastObject] componentsSeparatedByString:@"%"]firstObject]length];

}

}

return 0;

}

這樣通過(guò)重新分割字符串,得到“%”的位置,不論傳入的數(shù)字是一位數(shù)還是兩位數(shù),一鍵搞定!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容