本來以為挺簡(jiǎn)單的效果筋栋,沒想到居然有點(diǎn)小坑??零远,寫下來跟大家分享下
給字符串添加刪除線效果
1. 給字符串"123456"添加刪除線效果
設(shè)置@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle)}
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456"
attributes:@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle)}];
label.attributedText = attrStr;
在iOS 8.1苗分,9.0,10.3系統(tǒng)的模擬器牵辣,呈現(xiàn)出一樣的效果摔癣,如下:
2. 只給字符串某一部分添加刪除線
如:字符串"123456"择浊,只給“456”添加刪除線
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456"];
[attrStr setAttributes:@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle)}
range:NSMakeRange(3, 3)];
label.attributedText = attrStr;
繼續(xù)使用上面的方法得到效果如下:
在iOS 8.1,10.3系統(tǒng)的模擬器效果(NSStrikethroughStyleAttributeName在iOS 10.3逾条、8.1不管用):
在iOS 9.0系統(tǒng)的模擬器效果:
問題出現(xiàn)了,如何在8.0和10.0的系統(tǒng)里面使方法生效师脂?
不懂就要查嘍担孔,經(jīng)過搜索以后,找到了最簡(jiǎn)單方便的解決辦法:
在iOS 8 需要額外給其他字符串設(shè)置
@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleNone)}
吃警,才能正常顯示
在iOS 10 需要額外給其他字符串設(shè)置@{NSBaselineOffsetAttributeName : @0}
糕篇,才能正常顯示
- 注:@(NSUnderlineStyleNone) 和 @0均是默認(rèn)值
兩者綜合一下,
代碼:
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456"
attributes:@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleNone)}];
[attrStr setAttributes:@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle),
NSBaselineOffsetAttributeName : @0}
range:NSMakeRange(3, 3)];
label.attributedText = attrStr;
效果:
在 iOS 8.1酌心、9.0 和 iOS 10.3均能正常顯示拌消,使用其他方法也可以,但是要保證上面的屬性設(shè)置上
給字符串添加下劃線效果
1. 給字符串"123456"添加下劃線效果
設(shè)置@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456"
attributes:@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}];
label.attributedText = attrStr;
在iOS 8.1,9.0安券,10.3系統(tǒng)的模擬器墩崩,正常顯示:
2. 只給字符串某一部分添加下劃線效果
如:字符串"123456",只給“456”添加下劃線
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456"];
[attrStr setAttributes:@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}
range:NSMakeRange(3, 3)];
label.attributedText = attrStr;
在iOS 9.0侯勉、 iOS 10.3顯示如下:
在iOS 8.1顯示如下(NSUnderlineStyleAttributeName在iOS 8.1不管用):
如何在iOS 8的系統(tǒng)里面使添加下劃線方法生效鹦筹?
在iOS 8 需要額外給其他字符串設(shè)置@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleNone)},才能正常顯示
代碼:
NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"123456"
attributes:@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleNone)}];
[attrStr setAttributes:@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}
range:NSMakeRange(3, 3)];
label.attributedText = attrStr;
效果:
總結(jié):
- 給整個(gè)字符串添加效果
- 刪除線:設(shè)置
@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle)}
- 下劃線:設(shè)置
@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)}
- 給部分字符添加效果
- 刪除線:
給全部字符串設(shè)置@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleNone)}
添加刪除線的字符串設(shè)置@{NSStrikethroughStyleAttributeName : @(NSUnderlineStyleSingle), NSBaselineOffsetAttributeName : @0}
- 下劃線:
給全部字符串設(shè)置@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleNone)}
添加下劃線的字符串設(shè)置@{NSUnderlineStyleAttributeName : @(NSUnderlineStyleSingle)