NSMutableAttributedString/NSAttributedString 富文本设置
今天在做项目的过程中,我们的设计师想要一种字体四周都带阴影的效果,但是我们平时使用的setShadowColor 和setShadowOffset是达不到这种效果,setShadowOffset 只能让阴影在上下,左右 方向中都只能显示一个方向,达不到文字的四周都有阴影的这种效果。随后我们在查阅iOS SDK之后,发现可以通过attributedText的属性来设置字体的样式,经过测试是可以的.
NSString *text = @"test";
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowColor:[UIColorcolorWithRed:0green:0blue:0alpha:0.5]];
[shadow setShadowBlurRadius:4.0];
[shadow setShadowOffset:CGSizeMake(0, 0)];
[attributedString addAttribute:NSShadowAttributeName value:shadow range:NSMakeRange(0, [attributedString length])];
[attributedString addAttribute:NSForegroundColorAttributeName value:[UIColorlightGrayColor] range:NSMakeRange(0, [attributedString length])];
[attributedString addAttribute:UIFontsystemFontOfSize value:18 range:NSMakeRange(0, [attributedString length])];
userName.attributedText = textLabelStr;
在上面这段代码中我们设置了字体大小,字体颜色,字体的阴影,字体阴影的大小。那么其实对字体样式进行设置的时候是可以限定样式应用在字符串中的位置。那么对于NSMutableAttributedString 我们可以添加哪些设置,SDK中描述如下:
NSFontAttributeName NS_AVAILABLE_IOS(6_0); // UIFont, default Helvetica(Neue) 12
NSParagraphStyleAttributeName NS_AVAILABLE_IOS(6_0); // NSParagraphStyle, default defaultParagraphStyle
NSForegroundColorAttributeName NS_AVAILABLE_IOS(6_0); // UIColor, default blackColor
NSBackgroundColorAttributeName NS_AVAILABLE_IOS(6_0); // UIColor, default nil: no background
NSLigatureAttributeName NS_AVAILABLE_IOS(6_0); // NSNumber containing integer, default 1: default ligatures, 0: no ligatures
NSKernAttributeName NS_AVAILABLE_IOS(6_0); // NSNumber containing floating point value, in points; amount to modify default kerning. 0 means kerning is disabled. (note: values other than nil and 0 are unsupported on iOS)
NSStrikethroughStyleAttributeName NS_AVAILABLE_IOS(6_0); // NSNumber containing integer, default 0: no strikethrough
NSUnderlineStyleAttributeName NS_AVAILABLE_IOS(6_0); // NSNumber containing integer, default 0: no underline
NSStrokeColorAttributeName NS_AVAILABLE_IOS(6_0); // UIColor, default nil: same as foreground color
NSStrokeWidthAttributeName NS_AVAILABLE_IOS(6_0); // NSNumber containing floating point value, in percent of font point size, default 0: no stroke; positive for stroke alone, negative for stroke and fill (a typical value for outlined text would be 3.0)
NSShadowAttributeName NS_AVAILABLE_IOS(6_0); // NSShadow, default nil: no shadow
NSTextEffectAttributeName NS_AVAILABLE_IOS(7_0); // NSString, default nil: no text effect
NSAttachmentAttributeName NS_AVAILABLE_IOS(7_0); // NSTextAttachment, default nil
NSLinkAttributeName NS_AVAILABLE_IOS(7_0); // NSURL (preferred) or NSString
NSBaselineOffsetAttributeName NS_AVAILABLE_IOS(7_0); // NSNumber containing floating point value, in points; offset from baseline, default 0
NSUnderlineColorAttributeName NS_AVAILABLE_IOS(7_0); // UIColor, default nil: same as foreground color
NSStrikethroughColorAttributeName NS_AVAILABLE_IOS(7_0); // UIColor, default nil: same as foreground color
NSObliquenessAttributeName NS_AVAILABLE_IOS(7_0); // NSNumber containing floating point value; skew to be applied to glyphs, default 0: no skew
NSExpansionAttributeName NS_AVAILABLE_IOS(7_0); // NSNumber containing floating point value; log of expansion factor to be applied to glyphs, default 0: no expansion
NSWritingDirectionAttributeName NS_AVAILABLE_IOS(7_0);
NSVerticalGlyphFormAttributeName NS_AVAILABLE_IOS(6_0);
typedef NS_ENUM(NSInteger, NSUnderlineStyle) {
NSUnderlineStyleNone = 0x00,
NSUnderlineStyleSingle = 0x01,
NSUnderlineStyleThick NS_ENUM_AVAILABLE_IOS(7_0) = 0x02,
NSUnderlineStyleDouble NS_ENUM_AVAILABLE_IOS(7_0) = 0x09,
NSUnderlinePatternSolid NS_ENUM_AVAILABLE_IOS(7_0) = 0x0000,
NSUnderlinePatternDot NS_ENUM_AVAILABLE_IOS(7_0) = 0x0100,
NSUnderlinePatternDash NS_ENUM_AVAILABLE_IOS(7_0) = 0x0200,
NSUnderlinePatternDashDot NS_ENUM_AVAILABLE_IOS(7_0) = 0x0300,
NSUnderlinePatternDashDotDot NS_ENUM_AVAILABLE_IOS(7_0) = 0x0400,
NSUnderlineByWord NS_ENUM_AVAILABLE_IOS(7_0) = 0x8000
} NS_ENUM_AVAILABLE_IOS(6_0);
typedef NS_ENUM(NSInteger, NSTextWritingDirection) {
NSTextWritingDirectionEmbedding = (0 << 1),
NSTextWritingDirectionOverride = (1 << 1)
} NS_ENUM_AVAILABLE_IOS(7_0);
NSTextEffectLetterpressStyle NS_AVAILABLE_IOS(7_0);
从官方文档中我们可以看到,对于字符串我们很多的样式都可以设置,针对我们的需求我们可以挑选相应的设置来进行设置。但是需要提醒的是这些属性的设置只有在ios6.0以后才有用,所以我们在兼容性方面应该做好抉择。另外有些样式的设置是需要在ios7之后才可以使用。另外对于UILable我们可以使用setBackgroundColor,setFont,setTextColor等,但是在我们使用了NSMutableAttributedString 对应的属性将会被覆盖,所以我们在使用这些样式的时候应该要明白这一点。
NSMutableAttributedString/NSAttributedString 富文本设置的更多相关文章
- 【转】iOS使用NSMutableAttributedString实现富文本
iOS使用NSMutableAttributedString实现富文本 在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘 ...
- 【代码笔记】iOS-获得富文本设置以后的文字高度
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- 【改】iOS学习之NSAttributedString(富文本)
NSAttributedString 叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体.字号.字体大小等各不相同的风格,还可以对段落进行格式化,一般都是对可变富文本(N ...
- iOS学习之NSAttributedString(富文本)
NSAttributedString 叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体.字号.字体大小等各不相同的风格,还可以对段落进行格式化,一般都是对可变富文本(N ...
- NSAttributedString富文本简单介绍和常用方法浅析
NSAttributedString基本知识点介绍 1.初始化方法 - (instancetype)initWithString:(NSString *)str; - (instancetype)in ...
- iOS使用NSMutableAttributedString实现富文本小结
NSAttributedString NSAttributedString对象管理适用于字符串中单个字符或字符范围的字符串和关联的属性集(例如字体和字距).NSAttributedString对象的默 ...
- 关于NSMutableAttributedString进行富文本 UILabel 的制作
//1.初始化与其他无异 NSMutableAttributedString *AttributedStr2 = [[NSMutableAttributedString alloc]initWithS ...
- swift---不同字体大小不同颜色label富文本设置
agreeDeal = UILabel() //富文本,不同字体颜色大小和颜色 let labelString = "登录注册,表示您同意<服务条款及隐私政策>"as ...
- iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求.之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦 ...
随机推荐
- Python list 操作
创建列表sample_list = ['a',1,('a','b')] Python 列表操作sample_list = ['a','b',0,1,3] 得到列表中的某一个值value_start = ...
- AngularJs 入门系列-2 表单验证
对于日常的开发来说,最常见的开发场景就是通过表单编辑数据,这里涉及的问题就是验证问题. angularjs 内置已经支持了常见的验证方式,可以轻松实现表单验证. 1. 绑定 为了方便,我们在 $sco ...
- 纸上谈兵:堆(heap)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 堆(heap)又被为优先队列(priority queue).尽管名为优先队列,但 ...
- OKR——Objectives and Key Results
1.OKR天生就有两个典型特征: 1)在精不在多——因为它是用来明确工作重心的(set one's priorities): 2)全体公开.透明——当你能够看到你的同级(peers).小老板(直接上级 ...
- eclipse下tomcat添加部署Module,Web名称与项目名称不一致的解决方法
问题描述: 使用eclipse,因为某种原因项目名称修改后,使用tomcat进行web发布时,选择“Add and Remove Projects...”或双击打开选择Modules选项卡后点击“An ...
- [Reship]如何回复审稿人意见
================================= This article came from here:http://blog.renren.com/GetEntry.do?id= ...
- 调用百度地图API的应用混淆后出问题
1 混淆后出问题,程序异常退出 在proguard-project.txt中添加 -libraryjars libs/BaiduLBS_Android.jar -keep class com.baid ...
- 《深入理解Nginx》阅读与实践(四):简单的HTTP过滤模块
一.Nginx的HTTP过滤模块特征 一个请求可以被任意个HTTP模块处理: 在普通HTTP模块处理请求完毕并调用ngx_http_send_header()发送HTTP头部或调用ngx_http_o ...
- Jquery DOM 操作列表
jQuery 文档操作方法 这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html(). jQuery 属性操作方法 下面列出的这些方法获得或设置元素的 DOM 属性. 这些方法对于 ...
- 分布式Hbase-0.98.4在Hadoop-2.2.0集群上的部署
fesh个人实践,欢迎经验交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3898991.html Hbase 是Apache Hadoop的数据库,能够对大数据提 ...