NSMutableAttributedString

NSMutableAttributedString_第1张图片

前一阵子在做项目的时候涉及到了图文混排的内容,用的是 NSMutableAttributedString,今天正好整理下,以便日后查阅

先来看一个小例子,实现表情图片和文字的混排效果,这里我们用Swift来实现:

class ViewController: UIViewController {
    
    @IBOutlet weak var demoLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let attrStr = NSAttributedString(string: "欢迎再次回来:", attributes: [NSForegroundColorAttributeName : UIColor.red])
        
        let attrStr1 = NSAttributedString(string: "Adinm", attributes: [NSForegroundColorAttributeName : UIColor.blue])
        
        // 图文混排
        let attacment = NSTextAttachment()
        attacment.image = UIImage(named: "d_aini")
        
        // 获取文字字体
        let font = demoLabel.font
        attacment.bounds = CGRect(x: 0, y: -4, width: (font?.lineHeight)!, height: (font?.lineHeight)!)
        let attrImageStr = NSAttributedString(attachment: attacment)
        
        let attrMStr = NSMutableAttributedString()
        attrMStr.append(attrStr)
        attrMStr.append(attrImageStr)
        attrMStr.append(attrStr1)
        
        demoLabel.attributedText = attrMStr
    }
}
图文混排.png

通过上面的代码我们可以看到通过NSTextAttachment可以将图片以附件的形式插入到属性文字中来达到我们想要的效果;

下面我们通过OC在来实现一遍:

NSString *str =@"欢迎再次回来:Admin";
    
    // 创建一个带有属性的字符串(比如颜色属性、字体属性等文字属性)
    NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:str];
    
    // addAttribute:添加某一个具体属性,添加一条删除线;
    [attrStr addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlinePatternSolid | NSUnderlineStyleDouble) range:[str rangeOfString:@"Admin"]];
    
    //addAttributes:添加多个属性
    NSMutableDictionary * dic=[NSMutableDictionary dictionary];
    dic[NSFontAttributeName]=[UIFont boldSystemFontOfSize:26];
    dic[NSForegroundColorAttributeName]=[UIColor redColor];
    [attrStr addAttributes:dic range:[str rangeOfString:@"Admin"]];
    
    self.lblTitle.attributedText = attrStr;

2.png

NSMutableAttributedString常见方法

为某一范围内文字设置多个属性

- (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range;

为某一范围内文字添加某个属性

- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;

为某一范围内文字添加多个属性

- (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range;

移除某范围内的某个属性

- (void)removeAttribute:(NSString *)name range:(NSRange)range;

常见的属性及说明

NSFontAttributeName 字体

NSParagraphStyleAttributeName 段落格式

NSForegroundColorAttributeName 字体颜色

NSBackgroundColorAttributeName 背景颜色

NSStrikethroughStyleAttributeName 删除线格式

NSUnderlineStyleAttributeName 下划线格式

NSStrokeColorAttributeName 删除线颜色

NSStrokeWidthAttributeName 删除线宽度

NSShadowAttributeName 阴影

你可能感兴趣的:(NSMutableAttributedString)