zoukankan      html  css  js  c++  java
  • iOS中使用NSAttributedString、NSMutableAttributedString 实现富文本

    NSMutableAttributedString 实现富文本

    1.实例化方法和使用方法

     实例化方法:

     使用字符串初始化

    - (id)initWithString:(NSString *)str;

    例:

    NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@"今天天气不错呀"];

    使用字符串和富文本格式的初始化

    - (id)initWithString:(NSString *)str attributes:(NSDictionary *)attrs;

     

    字典中存放一些属性名和属性值,如:

    NSDictionary *attributeDict = [NSDictionarydictionaryWithObjectsAndKeys:

                                   [UIFontsystemFontOfSize:15.0],NSFontAttributeName,

                                   [UIColor redColor],NSForegroundColorAttributeName,

                                   NSUnderlineStyleAttributeName,NSUnderlineStyleSingle,nil];

    NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@"今天天气不错呀" attributes:attributeDict];

     

    使用NSAttributedString初始化,跟NSMutableString,NSString类似

    - (id)initWithAttributedString:(NSAttributedString *)attester;

     1  // initWithString:  
     2  NSAttributedString *attributedString_str = [[NSAttributedString alloc] initWithString:@"attributedString"];  
     3  NSLog(@"%@", attributedString_str);  
     4  // textView.attributedText = attributedString_str;  
     5    
     6    
     7  // initWithAttributedString:  
     8  NSAttributedString *attributedString_atts = [[NSAttributedString alloc] initWithAttributedString:attributedString_str];  
     9  NSLog(@"%@", attributedString_atts);  
    10  // textView.attributedText = attributedString_atts;  
    11    
    12 // initWithString:attributes:  
    13  UIColor *backgroundColor = [UIColor blackColor];  
    14  NSNumber *baseLineOffset = [NSNumber numberWithFloat:20.0];  
    15  UIColor *foregroundColor = [UIColor whiteColor];  
    16  NSNumber *kern = [NSNumber numberWithFloat:5.0];  
    17  NSNumber *ligature = [NSNumber numberWithFloat:3.0];  
    18  NSURL *linkURL = [NSURL URLWithString:@"http://www.baidu.com"];  
    19 NSNumber *underline = [NSNumber numberWithInt:NSUnderlineStyleSingle];  
    20  NSDictionary *attrsDic = @{NSForegroundColorAttributeName: foregroundColor,  
    21                            NSBackgroundColorAttributeName: backgroundColor,  
    22                           NSBaselineOffsetAttributeName: baseLineOffset,  
    23                            NSKernAttributeName: kern,  
    24                           NSLigatureAttributeName: ligature,  
    25                            NSLinkAttributeName: linkURL,  
    26                            NSUnderlineStyleAttributeName: underline  
    27                            };  
    28  NSAttributedString *attributedString_str_atts = [[NSAttributedString alloc] initWithString:@"http://www.baidu.com" attributes:attrsDic];  
    29  NSLog(@"%@", attributedString_str_atts);  
    30  // textView.attributedText = attributedString_str_atts;  
    31    
    32    
    33  // initWithFileURL:options:documentAttributes:error:  
    34  NSURL *fileURL = nil;  
    35  fileURL = [[NSBundle mainBundle] URLForResource:@"Dynamic Coloring" withExtension:@"rtf"];  
    36  NSAttributedString *attributedString_fileURL = [[NSAttributedString alloc] initWithFileURL:fileURL options:@{} documentAttributes:nil error:nil];  
    37  NSLog(@"%@", attributedString_fileURL);  
    38  // textView.attributedText = attributedString_fileURL;  
    39    
    40    
    41  // initWithData:options:documentAttributes:error:  
    42  fileURL = nil;  
    43  fileURL = [[NSBundle mainBundle] URLForResource:@"View Layout" withExtension:@"rtf"];  
    44  NSData *data = [[NSData alloc] initWithContentsOfURL:fileURL];  
    45  NSAttributedString *attributedString_data = [[NSAttributedString alloc] initWithData:data options:@{} documentAttributes:nil error:nil];  
    46  NSLog(@"%@", attributedString_data);  
    47  // textView.attributedText = attributedString_data;  
    48    
    49   
    50  // initWithAttributedString:  
    51  NSMutableAttributedString *mutableAttributedString_attrs = [[NSMutableAttributedString alloc] initWithAttributedString:attributedString_fileURL]; 
     1 //使用方法:
     2 
     3 //为某一范围内文字设置多个属性
     4 
     5 - (void)setAttributes:(NSDictionary *)attrs range:(NSRange)range;
     6 
     7 //为某一范围内文字添加某个属性
     8 
     9 - (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;
    10 
    11 //为某一范围内文字添加多个属性
    12 
    13 - (void)addAttributes:(NSDictionary *)attrs range:(NSRange)range;
    14 
    15 //移除某范围内的某个属性
    16 
    17 - (void)removeAttribute:(NSString *)name range:(NSRange)range;

    2.     常见的属性及说明

    //字体
    
    NSFontAttributeName
    
    //段落格式
    
    NSParagraphStyleAttributeName
    
    //字体颜色
    
    NSForegroundColorAttributeName
    
    //背景颜色
    
    NSBackgroundColorAttributeName
    
    //删除线格式
    
    NSStrikethroughStyleAttributeName
    
    //下划线格式
    
    NSUnderlineStyleAttributeName
    
    删除线颜色
    
    NSStrokeColorAttributeName
    
    删除线宽度
    
    NSStrokeWidthAttributeName
    
    阴影
    
    NSShadowAttributeName

    3.应用实例

     1 //应用实例
     2 
     3 NSString *label_text1 = @"大家好我是一个Label,教大家实现富文本";
     4 
     5     NSMutableAttributedString *attributedString1 = [[NSMutableAttributedString alloc]initWithString:label_text1];
     6 
     7     
     8 
     9     [attributedString1 addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20] range:NSMakeRange(0, label_text1.length)];
    10 
    11     [attributedString1 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(12, 2)];
    12 
    13     [attributedString1 addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(17, 2)];
    14 
    15     //最好设置一下行高(每行字之间的距离(行间距)),不设的话默认是0
    16 
    17     NSMutableParagraphStyle *sty = [[NSMutableParagraphStyle alloc] init];
    18 
    19     sty.lineSpacing = 5;
    20 
    21     [attributedString1 addAttribute:NSParagraphStyleAttributeName value:sty range:NSMakeRange(0, label_text1.length)];
    22 
    23     
    24 
    25     UILabel *ybLabel1 = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, self.view.bounds.size.width - 20, 60)];
    26 
    27     ybLabel1.backgroundColor = [UIColor yellowColor];
    28 
    29     ybLabel1.numberOfLines = 2;
    30 
    31     ybLabel1.attributedText = attributedString1;


     1 应用实例
     2 //下划线格式
     3 NSUnderlineStyleAttributeName
     4 NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc]initWithString:_forgetPasswordLabel.text];
     5 
     6         [attributedStr addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:NSMakeRange(0, _forgetPasswordLabel.text.length)];
    7 8 //删除线格式 9 NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc]initWithString:_marketPriceLabel.text]; 10 11 [attributedStr addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlinePatternSolid | NSUnderlineStyleSingle) range:NSMakeRange(0, _marketPriceLabel.text.length)]; 12 13 //删除线颜色 14 [attributedStr addAttribute:NSStrokeColorAttributeName value:[UIColor darkGrayColor] range:NSMakeRange(0, _marketPriceLabel.text.length)];


    //设置行间距
      NSMutableParagraphStyle *sty = [[NSMutableParagraphStyle alloc] init];
    sty.lineSpacing = 5;  [attributedString1 addAttribute:NSParagraphStyleAttributeName value:sty range:NSMakeRange(0, label_text1.length)];
    //富文本 下划线的几种样式
    typedef NS_ENUM(NSInteger, NSUnderlineStyle) {
        NSUnderlineStyleNone                                   
        NSUnderlineStyleSingle         //单下划线                        
        NSUnderlineStyleThick          //加粗效果下划线
        NSUnderlineStyleDouble        //双下划綫
    
        NSUnderlinePatternSolid 
        NSUnderlinePatternDot 
        NSUnderlinePatternDash 
        NSUnderlinePatternDashDot 
        NSUnderlinePatternDashDotDot 
    
        NSUnderlineByWord 
    } 
    

    看完了是不是 很有感觉呀!这样你就学会了给一行字设置不同的格式了!

    感谢您的访问! 若对您有帮助或有兴趣请关注博客:http://www.cnblogs.com/Rong-Shengcom/
  • 相关阅读:
    Anders Hejlsberg 和 Erich Gamma
    node-webkit
    用户密码加密存储十问十答,一文说透密码安全存储
    Spring Security-- 验证码功能的实现
    BigDecimal 专题
    基于微信开发 专题
    unwrapThrowable
    Android PullToRefreshExpandableListView的点击事件
    Android The content of the adapter has changed but ListView did not receive a notification
    Android入门:广播发送者与广播接收者
  • 原文地址:https://www.cnblogs.com/Rong-Shengcom/p/6143901.html
Copyright © 2011-2022 走看看