zoukankan      html  css  js  c++  java
  • 图文混排——用表情代替"[文字]"

    1.简单设置带属性的字符串

        定义一个NSMutableAttributedString带属性的字符串

        NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"hello[1_1] world![哈哈][微笑]"];

        设置属性

        [str setAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:60], NSForegroundColorAttributeName:[UIColor redColor], NSBackgroundColorAttributeName:[UIColor greenColor], NSUnderlineColorAttributeName:[UIColor blueColor], NSUnderlineStyleAttributeName:@(NSUnderlineStyleDouble)} range:NSMakeRange(0, 5)];

        显示

        _label.attributedText = str;

    2. 用表情代替带[]的文字(qq会话,微信会话)

     

    定义正则表达式

        NSString *pattern = @"\[[u4E00-u9FA5]+\]";

        NSRegularExpression *regular = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];

        

        NSString *text = @"hello[1_1] world![哈哈]";

        得到符合表达式的数组NSTextCheckingResult类型的

        NSArray *resultArray = [regular matchesInString:text options:0 range:NSMakeRange(0, text.length)];

        

        定义一个带附件的字符串

        NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:text];

     

        for (NSTextCheckingResult *result in resultArray) {

            位置

            NSRange range = result.range;

            得到附件

            NSTextAttachment *attach = [[NSTextAttachment alloc] init];

            设置附件的图片

            attach.image = [UIImage imageNamed:@"d_guzhang"];

            得到附件生成的字符串

            NSAttributedString *imageStr = [NSAttributedString attributedStringWithAttachment:attach];

            把文字替换成表情

            [attStr replaceCharactersInRange:range withAttributedString:imageStr];

        }

        _label.attributedText = attStr;

     
  • 相关阅读:
    学习Kubernetes,这些负载均衡知识点得知道!
    Nginx请求处理流程
    字节跳动面试题+答案,答对了30+
    Cache 和 Buffer 的区别在哪里
    优化你的HTTPS(下),你需要这么做
    优化你的HTTPS(上),你需要这么做
    swift之Mac中NSSplitView的简单实用
    oc之mac中- NSBox
    Mac之NSImageView的简单实用
    swift之预防 Timer 的循环引用
  • 原文地址:https://www.cnblogs.com/damonWq/p/5342767.html
Copyright © 2011-2022 走看看