zoukankan      html  css  js  c++  java
  • NSAttributedString使用方法整理

    NSAttributedString,是带有属性的字符串(富文本),分为NSAttributedString和NSMutableAttributedString. 可以用在 UILabel、UITextView 等处。

    属性就是一个以属性名为 key 的字典。常见的属性有:

     1     // NSFontAttributeName                设置字体属性,默认值:字体:Helvetica(Neue) 字号:12
     2     // NSForegroundColorAttributeNam      设置字体颜色,取值为 UIColor对象,默认值为黑色
     3     // NSBackgroundColorAttributeName     设置字体所在区域背景颜色,取值为 UIColor对象,默认值为nil, 透明色
     4     // NSLigatureAttributeName            设置连体属性,取值为NSNumber 对象(整数),0 表示没有连体字符,1 表示使用默认的连体字符
     5     // NSKernAttributeName                设定字符间距,取值为 NSNumber 对象(整数),正值间距加宽,负值间距变窄
     6     // NSStrikethroughStyleAttributeName  设置删除线,取值为 NSNumber 对象(整数)
     7     // NSStrikethroughColorAttributeName  设置删除线颜色,取值为 UIColor 对象,默认值为黑色
     8     // NSUnderlineStyleAttributeName      设置下划线,取值为 NSNumber 对象(整数),枚举常量 NSUnderlineStyle中的值,与删除线类似
     9     // NSUnderlineColorAttributeName      设置下划线颜色,取值为 UIColor 对象,默认值为黑色
    10     // NSStrokeWidthAttributeName         设置笔画宽度,取值为 NSNumber 对象(整数),负值填充效果,正值中空效果
    11     // NSStrokeColorAttributeName         填充部分颜色,不是字体颜色,取值为 UIColor 对象
    12     // NSShadowAttributeName              设置阴影属性,取值为 NSShadow 对象
    13     // NSTextEffectAttributeName          设置文本特殊效果,取值为 NSString 对象,目前只有图版印刷效果可用:
    14     // NSBaselineOffsetAttributeName      设置基线偏移值,取值为 NSNumber (float),正值上偏,负值下偏
    15     // NSObliquenessAttributeName         设置字形倾斜度,取值为 NSNumber (float),正值右倾,负值左倾
    16     // NSExpansionAttributeName           设置文本横向拉伸属性,取值为 NSNumber (float),正值横向拉伸文本,负值横向压缩文本
    17     // NSWritingDirectionAttributeName    设置文字书写方向,从左向右书写或者从右向左书写
    18     // NSVerticalGlyphFormAttributeName   设置文字排版方向,取值为 NSNumber 对象(整数),0 表示横排文本,1 表示竖排文本
    19     // NSLinkAttributeName                设置链接属性,点击后调用浏览器打开指定URL地址
    20     // NSAttachmentAttributeName          设置文本附件,取值为NSTextAttachment对象,常用于文字图片混排
    21     // NSParagraphStyleAttributeName      设置文本段落排版格式,取值为 NSParagraphStyle 对象

    使用方法:

    1.初始化一个NSMutableAttributedString,给它添加属性,再把它赋给控件的AttributedText,适用于文本较少又需要精细控制的情况。

     1     NSString *originStr = @"测试富文本属性";
     2     //创建 NSMutableAttributedString
     3     NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString: originStr];
     4     
     5     //添加属性
     6     //设置全部字体为14号粗体
     7     [attributedStr addAttribute: NSFontAttributeName value: [UIFont  boldSystemFontOfSize:14]
     8                             range: NSMakeRange(0, originStr.length)];
     9     //设置前4个字体为蓝色
    10     [attributedStr addAttribute: NSForegroundColorAttributeName value: [UIColor blueColor] range: NSMakeRange(0, 4)];
    11     
    12     //赋值给显示控件label的 attributedText
    13     _label.attributedText = attributedStr;

    2.创建一个属性字典,初始化各项属性。然后和需要控制的文本一起创建并赋值给控件的AttributedText,该方法适合于需要控制的文本较多整体控制的情况,通常是从文件中读取的大段文本控制。

    1     NSString *originStr = @"测试富文本属性";
    2     //创建属性字典
    3     NSDictionary *attrDict = @{NSFontAttributeName: [UIFont systemFontOfSize:15],
    4                                NSForegroundColorAttributeName: [UIColor blueColor]};
    5     //将字符串和属性赋给控件的 AttributedText,也可以指定 range
    6     label.attributedText = [[NSAttributedString alloc] initWithString:[originStr substringWithRange:NSMakeRange(0, 6)] attributes:attrDict];

    使用详解:

    1.NSForegroundColorAttributeName设置的颜色与UILabel的textColor属性设置的颜色在地位上是相等的,谁最后赋值,最终显示的就是谁的颜色。但是textColor属性可以与 NSBackgroundColorAttributeName 属性叠加。

    2. NSStrikethroughStyleAttributeName用来设置NSUnderlineStyle中的值

    1 // NSUnderlineStyleNone   不设置删除线
    2 // NSUnderlineStyleSingle 设置删除线为细单实线
    3 // NSUnderlineStyleThick  设置删除线为粗单实线
    4 // NSUnderlineStyleDouble 设置删除线为细双实线
    这些枚举常量是包含一个整数的 NSNumber,所以同样必须先转化为 NSNumber 才能使用删除线和下划线使用相同的枚举常量作为其属性值。
    1 NSDictionary *attrDict = @{ NSStrikethroughStyleAttributeName: @(NSUnderlineStyleSingle),
    2                              NSFontAttributeName: [UIFont systemFontOfSize:20] };
    3 _label.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict];
    中文和英文删除线的位置有所不同。
    另外,删除线属性取值除了上面的4种外,其实还可以取其他整数值:取值为 0 - 7时,效果为单实线,随着值得增加,单实线逐渐变粗,取值为 9 - 15时,效果为双实线,取值越大,双实线越粗。
    1 NSDictionary *attrDict = @{ NSStrikethroughStyleAttributeName: @(1),
    2                               NSFontAttributeName: [UIFont systemFontOfSize:20] };
    3 _label.attributedText = [[NSAttributedString alloc] initWithString: originStr attributes: attrDict];

    3.下划线和删除线类似,可以参考设置

     1         NSUnderlineStyleNone //没有下划线
     2         NSUnderlineStyleSingle //单下划线
     3         NSUnderlineStyleThick //粗下划线
     4         NSUnderlineStyleDouble //双下划线
     5         NSUnderlinePatternSolid //实心下划线
     6         NSUnderlinePatternDot //点下划线
     7         NSUnderlinePatternDash //破折号下划线
     8         NSUnderlinePatternDashDot //破折号和点下划线
     9         NSUnderlinePatternDashDotDot //一个破折号和两个点的下划线
    10         NSUnderlineByWord //下划线紧贴文字

    4.NSParagraphStyleAttributeName 设置段落样式,包括:

     1 //alignment 对齐;
     2 //firstLineHeadIndent:首行缩进
     3 //tailIndent:段落尾部缩进
     4 //headIndent:段落前部缩进(左缩进?)
     5 //maximumLineHeight:最大行高
     6 //minimumLineHeight:最小行高
     7 //lineSpacing:行间距
     8 //paragraphSpacing:段落间距
     9 //lineBreakMode:断行模式
    10 //defaultWritingDirectionForLanguage:默认书写方向(可以指定某种语言)
    11 //baseWritingDirection(基础的书写方向)

    lineBreakMode有6种:

    1 //NSLineBreakByCharWrapping;以字符为显示单位显示,后面部分省略不显示。
    2 //NSLineBreakByClipping;剪切与文本宽度相同的内容长度,后半部分被删除。
    3 //NSLineBreakByTruncatingHead;前面部分文字以……方式省略,显示尾部文字内容。
    4 //NSLineBreakByTruncatingMiddle;中间的内容以……方式省略,显示头尾的文字内容。
    5 //NSLineBreakByTruncatingTail;结尾部分的内容以……方式省略,显示头的文字内容。
    6 //NSLineBreakByWordWrapping;以单词为显示单位显示,后面部分省略不显示。
  • 相关阅读:
    Mac 下 IDEA 无法启动的问题
    oracle impdp
    张亚琴:人生是赛场不是战场,人生是一个没有终点的赛场,永远都在起跑线上
    sc抽象组件工作
    Jenkins 实现gitLab提交代码立即利用Jenkins发版
    Jenkins 修改admin密码
    docker 安装nginx,并配置vue项目在nginx启动
    No 'Access-Control-Allow-Origin' header is present on the requested resource 是跨域的问题吗?
    Vue个别vue文件不能热加载
    IVT虚拟化支持
  • 原文地址:https://www.cnblogs.com/xiayao/p/5296616.html
Copyright © 2011-2022 走看看