富文本NSMutableAttributedString

2017-04-26  本文已影响29人  剪刀_石头_布

一、文本中划线

在iOS10.3后,文本中如果包含中文,那么之前的中划线设置方法会失效,我们只需要增加一个富文本属性:

NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle)

就可以啦。代码如下:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, self.view.frame.size.width - 40, 50)];

label.text = @"gfrrr加一个中划线_egre";

label.textAlignment = NSTextAlignmentCenter;

NSMutableAttributedString *attributeMarket = [[NSMutableAttributedString alloc] initWithString:label.text];

[attributeMarket setAttributes:@{NSStrikethroughStyleAttributeName: [NSNumber numberWithInteger:NSUnderlineStyleSingle], NSBaselineOffsetAttributeName : @(NSUnderlineStyleSingle), NSFontAttributeName:[UIFont systemFontOfSize:25.0], NSForegroundColorAttributeName:[UIColor redColor]} range:NSMakeRange(0,label.text.length)];

label.attributedText = attributeMarket;

[self.view addSubview:label];

效果图:

文本中划线

当然了,如果要添加下划线,只需要改变富文本的一个属性就可以,把上面的中划线改变为下划线,也就是把

NSStrikethroughStyleAttributeName: [NSNumber numberWithInteger:NSUnderlineStyleSingle]这个富文本属性改为下面这个就可以啦

NSUnderlineStyleAttributeName: [NSNumbernumberWithInteger:NSUnderlineStyleSingle]

文本下划线

二、文本大小颜色改变

可以是一段个别文字改变大小和改变颜色,代码如下:

UILabel *newLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 100, self.view.frame.size.width - 40, 180)];

newLabel.numberOfLines = 0;

newLabel.textAlignment = NSTextAlignmentCenter;

NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:@"让一段字中某几个字发生变化{大小、颜色的变化}"];

[attr setAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:25.0], NSForegroundColorAttributeName:[UIColor redColor]} range:NSMakeRange(14, 5)];

newLabel.attributedText = attr;

[self.view addSubview:newLabel];

效果图:

改变个别文字
上一篇下一篇

猜你喜欢

热点阅读