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;以单词为显示单位显示,后面部分省略不显示。
时间: 2024-12-18 18:11:36

NSAttributedString使用方法整理的相关文章

JavaScript实现判断图片是否加载完成的3种方法整理

JavaScript实现判断图片是否加载完成的3种方法整理 有时候我们在前端开发工作中为了获取图片的信息,需要在图片加载完成后才可以正确的获取到图片的大小尺寸,并且执行相应的回调函数使图片产生某种显示效果.本文主要整理了几种常见的javascipt判断图片加载完成时的方法,并通过代码与实际应用相结合进行解释与说明. onload方法 通过向img标签添加onload属性,并填入相应的函数来执行后续的javascipt代码.如下代码例子中img元素默认是不显示的,通过onload判断加载完成后再将

与屏幕亮度调节相关的各种方法整理

public class SystemManager { private Context mContext; private static SystemManager sInstance; private SystemManager(final Context context) { mContext = context; } public static SystemManager init(final Context context) { if (null == sInstance) { sIn

VS编译duilib项目时候的错误解决方法整理

@1:找不到Riched20.lib 用everything等软件搜索下磁盘,找到所在的目录添加到vs的库目录即可,我得是C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib:其他的vs版本可能不一样,自行搜索 @2: "IDispatchEx": 重定义:不同的基类型 点击打开链接 UIFlash.h行: #import "..\Utils/Flash11.tlb" raw_interfaces_only,

常用js方法整理common.js

项目中常用js方法整理成了common.js var h = {}; h.get = function (url, data, ok, error) { $.ajax({ url: url, data: data, dataType: 'json', success: ok, error: error }); } h.post = function (url, data, ok, error) { $.ajax({ url: url, data: data, type: 'post', data

常见的布局方法整理[兼容]

一行两列左侧固定右侧自动适应 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv

【方法整理】Oracle 获取trace跟踪文件名的几种常用方式

[方法整理]Oracle 获取trace跟踪文件名的几种常用方式 1  BLOG文档结构图     2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① trace跟踪文件的获取   Tips: ① 本文在itpub(http://blog.itpub.net/26736162).博客园(http://www.cnblogs.com/lhrbest)和微信公众号(xiaomaimiaolhr)有同

激活码失效问题的解决方法整理

ShopEx体系产品激活码失效可能存在由以下问题造成: 1.产品已经到期. 这种情况的解决方案是需要找商派公司进行产品续费或者是将您的产品升级成终身授权的产品,可以电话咨询:4008908858 2.由于服务器网络环境造成. 这种情况下,需要对服务器网络环境进行检查,可以参考文档:http://bbs.ec-os.net/simple/?t834.html    用户名/密码:test/123456 3.由于mysql异常或者磁盘空间已满等原因造成. 这种情况下,需要对mysql和磁盘等一一做检

Java web 常见对象的取值方法整理

一.从request中取值: 1.取param: servlet:  request.getParameter() request.getParameterValues() jsp脚本:request.getParameter() request.getParameterValues() jstl/el:  ${param.name} ${paramaValues.names[0]} struts ognl:<s:property value="#parameters.ParamName[

css清除浮动的几种方法整理

此为未清除浮动源代码,运行代码无法查看到父级元素浅黄色背景. <style type="text/css"> <!– *{margin:0;padding:0;} body{font:36px bold; color:#F00; text-align:center;} #layout{background:#FF9;} #left{float:left;width:20%;height:200px;background:#DDD;line-height:200px;}