例子:http://www.jianshu.com/p/9ffcdc0003e0

下面研究下AttributedString究竟可以设置哪些属性,具体来说,有以下21个:

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

#pragma mark - 富文本操作

/**1

*  单纯改变一句话中的某些字的颜色

*

*  @param color    需要改变成的颜色

*  @param totalStr 总的字符串

*  @param subArray 需要改变颜色的文字数组

*

*  @return 生成的富文本

*/

- (NSMutableAttributedString *)ls_changeCorlorWithColor:(UIColor *)color TotalString:(NSString *)totalStr SubStringArray:(NSArray *)subArray {

NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:totalStr];

for(NSString *rangeStr in subArray) {

NSRange range = [totalStr rangeOfString:rangeStr options:NSBackwardsSearch];

[attributedStr addAttribute:NSForegroundColorAttributeName value:color range:range];

}

return attributedStr;

}

/**2

*  单纯改变句子的字间距(需要 <CoreText/CoreText.h>)

*

*  @param totalString 需要更改的字符串

*  @param space       字间距

*

*  @return 生成的富文本

*/

- (NSMutableAttributedString *)ls_changeSpaceWithTotalString:(NSString *)totalString Space:(CGFloat)space {

NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:totalString];

long number = space;

CFNumberRef num = CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt8Type,&number);

[attributedStr addAttribute:(id)kCTKernAttributeName value:(__bridge id)num range:NSMakeRange(0,[attributedStr length])];

CFRelease(num);

return attributedStr;

}

/** 3

*  单纯改变段落的行间距

*

*  @param totalString 需要更改的字符串

*  @param lineSpace   行间距

*

*  @return 生成的富文本

*/

- (NSMutableAttributedString *)ls_changeLineSpaceWithTotalString:(NSString *)totalString LineSpace:(CGFloat)lineSpace {

NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:totalString];

NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];

[paragraphStyle setLineSpacing:lineSpace];

[attributedStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [totalString length])];

return attributedStr;

}

/**4

*  同时更改行间距和字间距

*

*  @param totalString 需要改变的字符串

*  @param lineSpace   行间距

*  @param textSpace   字间距

*

*  @return 生成的富文本

*/

- (NSMutableAttributedString *)ls_changeLineAndTextSpaceWithTotalString:(NSString *)totalString LineSpace:(CGFloat)lineSpace textSpace:(CGFloat)textSpace {

NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:totalString];

NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];

[paragraphStyle setLineSpacing:lineSpace];

[attributedStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [totalString length])];

long number = textSpace;

CFNumberRef num = CFNumberCreate(kCFAllocatorDefault,kCFNumberSInt8Type,&number);

[attributedStr addAttribute:(id)kCTKernAttributeName value:(__bridge id)num range:NSMakeRange(0,[attributedStr length])];

CFRelease(num);

return attributedStr;

}

/** 5

*  改变某些文字的颜色 并单独设置其字体

*

*  @param font        设置的字体

*  @param color       颜色

*  @param totalString 总的字符串

*  @param subArray    想要变色的字符数组

*

*  @return 生成的富文本

*/

- (NSMutableAttributedString *)ls_changeFontAndColor:(UIFont *)font Color:(UIColor *)color TotalString:(NSString *)totalString SubStringArray:(NSArray *)subArray {

NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:totalString];

for (NSString *rangeStr in subArray) {

NSRange range = [totalString rangeOfString:rangeStr options:NSBackwardsSearch];

[attributedStr addAttribute:NSForegroundColorAttributeName value:color range:range];

[attributedStr addAttribute:NSFontAttributeName value:font range:range];

}

return attributedStr;

}

/** 6

*  为某些文字改为链接形式

*

*  @param totalString 总的字符串

*  @param subArray    需要改变颜色的文字数组(要是有相同的 只取第一个)

*

*  @return 生成的富文本

*/

- (NSMutableAttributedString *)ls_addLinkWithTotalString:(NSString *)totalString SubStringArray:(NSArray *)subArray {

NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:totalString];

for (NSString *rangeStr in subArray) {

NSRange range = [totalString rangeOfString:rangeStr options:NSBackwardsSearch];

[attributedStr addAttribute:NSLinkAttributeName value:totalString range:range];

}

return attributedStr;

}

#warning  //链接(Label中的链接不能点击,UITextView中的链接可以点击)

NSString *total6 = @"同时改行间距和字间距,此时行间距为10>>详情";

NSArray *arr = @[@">>详情"];

self.label6.attributedText = [self ls_addLinkWithTotalString:total6 SubStringArray:arr];

UITextView *textView = [[UITextView alloc]initWithFrame:CGRectMake(10, 100, 200, 200)];

textView.backgroundColor = [UIColor greenColor];

textView.delegate = self;

textView.scrollEnabled = NO;

textView.editable = NO;

textView.font = [UIFont systemFontOfSize:15];

NSString *str = @"今天是Ⅰ类账户 个好日子好日子好日子好日子好日子好日子>>详情";

[self.view addSubview:textView];

NSString *strr = [self replaceString:str OfRange:NSMakeRange(3, 4) WithString:@"Ⅲ类账户"];

NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc]initWithString:strr];

NSRange range = [str rangeOfString:@">>详情"];

//    [attStr addAttribute:NSLinkAttributeName  value:[NSURL URLWithString:@"http://www.google.com"] range:range];

[attStr addAttribute:NSLinkAttributeName  value: @" " range:range];

[attStr addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(3, 4)];

textView.attributedText = attStr;

#pragma mark  UITextView Delegate

- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange

{

NSLog(@"响应=============%@",URL);

//    NextViewController *vc = [[NextViewController alloc]init];

//    [self presentViewController:vc animated:YES completion:nil];

return YES;

}

 
 
 
 
 
 
 
 
 
 
 

富文本NSAttributeString的更多相关文章

  1. iOS富文本组件的实现—DTCoreText源码解析 数据篇

    本文转载 http://blog.cnbang.net/tech/2630/ DTCoreText是个开源的iOS富文本组件,它可以解析HTML与CSS最终用CoreText绘制出来,通常用于在一些需 ...

  2. iOS富文本(一)属性化字符串

    概述 iOS一些复杂的文本布局一般都是由底层的Core Text来实现的,直到iOS7苹果发布了Text Kit框架,Text Kit能够很简单实现一些复杂的文本样式以及布局,而Text Kit富文本 ...

  3. 富文本编辑器Simditor的简易使用

    最近打算自己做一个博客系统,并不打算使用帝国cms或者wordpress之类的做后台管理!自己处于学习阶段也就想把从前台到后台一起谢了.好了,废话不多说了,先来看看富文本编辑器SimDitor,这里是 ...

  4. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  5. 图解DevExpress RichEditControl富文本的使用,附源码及官方API

    9点半了,刚写到1.2.   该回家了,明天继续写完. 大家还需要什么操作,留言说一下,没有的我明天继续加. 好久没有玩DevExpress了,今天下载了一个玩玩,发现竟然更新到14.2.5了..我去 ...

  6. jsp富文本图片和数据上传

    好记性不如烂笔头,记录一下. 2016的最后一天,以一篇博客结尾迎接新的一年. 此处用的富文本编辑器是wangEditor,一款开源的轻量级的富文本编辑器,这里着重说一下里面的图片上传功能. 服务器端 ...

  7. UEditor百度富文本编辑器--让编辑器自适应宽度的解决方案

    UEditor百度富文本编辑器的initialFrameWidth属性,默认值是1000. 不能够自适应屏幕宽度.如图1: 刚开始的时候,我是直接设置initialFrameWidth=null的.效 ...

  8. iOS - NSMutableAttributedString富文本的实现

    NSMutableAttributedString继承于NSAttributedString(带属性的字符串)能够简单快速实现富文本的效果;不多说直接上效果图和代码,通俗易懂: (一)效果图: (二) ...

  9. 【代码笔记】iOS-获得富文本设置以后的文字高度

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

随机推荐

  1. jq操作radio,设置选中、获取选中值

    <label><inputtype="radio"name="sex"value="1">男</label&g ...

  2. MyEclipse 2014去除derby

    在MyEclipse安装目录下打开configuration\org.eclipse.equinox.simpleconfigurator\bundles.info 搜索derby找到com.genu ...

  3. TCP协议滑动窗口(一)——控制数据传输速率

    窗口大小:TCP头中一个16位的域,表示当前可用接受缓冲区大小.在每个TCP对等段连接初始化时,告诉对方自己的窗口大小(不一定是满额,假如满额65201字节,可能暂时通告5840字节).若客户端接受数 ...

  4. 爱你不容易 —— Stream详解

    作为前端,我们常常会和 Stream 有着频繁的接触.比如使用 gulp 对项目进行构建的时候,我们会使用 gulp.src 接口将匹配到的文件转为 stream(流)的形式,再通过 .pipe() ...

  5. 【原创】梵高油画用深度卷积神经网络迭代十万次是什么效果? A neural style of convolutional neural networks

    作为一个脱离了低级趣味的码农,春节假期闲来无事,决定做一些有意思的事情打发时间,碰巧看到这篇论文: A neural style of convolutional neural networks,译作 ...

  6. ArcGIS API for JavaScript 4.2学习笔记[5] 官方API大章节概述与内容转译

    内容如上,截图自ESRI官网,连接:ArcGIS API for JavaScript 4.2 [Get Started] 类似于绪论一样的东西,抽取了最需要关注的几个例子.如:加载Map和View, ...

  7. ASP.NET Forms身份认证

    asp.net程序开发,用户根据角色访问对应页面以及功能. 项目结构如下图: 根目录 Web.config 代码: <?xml version="1.0" encoding= ...

  8. php 引入文件 include 和require

    php 如何引用文件? 先建一个php 文件,php文件名要和所建的类名相同, 然后直接在php 中用include("")/include"" 和requir ...

  9. VS error 全集(error C2664: 'CWnd::MessageBoxW' : cannot convert parameter 1 from 'char *' to 'LPCTSTR'的解决方法)

    我用的是VS2005,在编译MFC时遇到了如下错误: error C2664: 'CWnd::MessageBoxW' : cannot convert parameter 1 from 'char ...

  10. JAVA试练塔之试炼技能图

    1.计算机基础: 1.1数据机构基础: 主要学习: 1.向量,链表,栈,队列和堆,词典.熟悉 2.树,二叉搜索树.熟悉 3.图,有向图,无向图,基本概念 4.二叉搜索A,B,C类熟练,9大排序熟悉. ...