富文本

作者: LennonLin | 来源:发表于2016-01-06 17:43 被阅读620次
    • NSTextAttachment:图片转化成富文本内容
    • NSAttributedString:文字的富文本
    • NSMutableAttributedString:可变的富文本,就可以把内容和文字转好的富文本添加进来成为图文混排。

    [TOC]

    示例1:文字字体颜色定制

    #import "ViewController.h"
    
    @interface ViewController ()
    
    @property (weak, nonatomic) IBOutlet UILabel *attrLabel;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        // 创建NSAttributedString对象
        NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"Talk is cheap, show me the code"];
        // 设置前半部分为红色
        NSRange PrefixRange = [attrStr.string rangeOfString:@"Talk is cheap"];
        [attrStr setAttributes:@{NSForegroundColorAttributeName : [UIColor redColor], NSFontAttributeName : [UIFont boldSystemFontOfSize:20]} range:PrefixRange];
        // 设置后半部分背景为紫色
        NSRange lastRange = [attrStr.string rangeOfString:@"show me the code"];
        [attrStr setAttributes:@{NSBackgroundColorAttributeName : [UIColor purpleColor], NSForegroundColorAttributeName : [UIColor greenColor]} range:lastRange];
        
        
        self.attrLabel.attributedText = attrStr;
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    

    示例2:图文混排

    不可编译 调用

    调用:  NSAttributedString *downloadAttr = [self createAttrStringWithText:model.downloads image:[UIImage imageNamed:@"topic_Download"]];
        _downLoadLabel.attributedText = downloadAttr;
    
    // 创建图文混排的富文本
    // CoreText.framework 图文混排框架
    - (NSAttributedString *) createAttrStringWithText:(NSString *) text image:(UIImage *) image
    {
        // NSTextAttach 可以将图片转换为富文本内容
        NSTextAttachment *attachment = [[NSTextAttachment alloc] init];
        // 创建通过NSTextAttachment的富文本
        // 图片的富文本
        attachment.image = image;
        // 文字的富文本
        NSAttributedString *imageAttr = [NSAttributedString attributedStringWithAttachment:attachment];
        NSAttributedString *textAttr = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13]}];
        NSMutableAttributedString *mutableAttr = [[NSMutableAttributedString alloc] init];
        [mutableAttr appendAttributedString:imageAttr];
        [mutableAttr appendAttributedString:textAttr];
        // copy出来是不可变的
        return [mutableAttr copy];
    }
    
    

    相关文章

      网友评论

        本文标题:富文本

        本文链接:https://www.haomeiwen.com/subject/evixkttx.html