例子: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. AIX上面Oracle数据库相关启动

    1,启动停止Oracle实例 (1) su -oracle (2) echo $ORACLE_SID (3) sqlplus /nolog //以不登录到数据库的方式进入sqlplus环境 (4) c ...

  2. C# 程序集 和 反射

    .Net反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为.Net的反射机 ...

  3. Canvas 阴影效果

    shadow <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  4. Bootstrap入门(六)按钮和图片

    Bootstrap入门(六)按钮和图片   先引入本地的CSS文件 <link href="css/bootstrap.min.css" rel="styleshe ...

  5. greenlet 详解

    在前面的文章中提到python原生的generator是semicoroutine,而greenlet是 真 协程.本文内容主要来自对官网文档的翻译,在其中也加入了很多自己的理解和例子.主要包括以下内 ...

  6. 【G】开源的分布式部署解决方案 - 预告篇

    为什么想到要做分布式部署解决方案? 当项目越做越大以后,你会发现部署变成一件极其头疼的事情.当然头疼的绝不仅仅在部署一个环节,比如新服务器环境搭建当中就许多坑要踩.各种重复性的工作,包括但不仅限于增加 ...

  7. java原装代码完成pdf在线预览和pdf打印及下载

    这是我在工作中,遇到这样需求,完成需求后,总结的成果,就当做是工作笔记,以免日后忘记,当然,能帮助到别人是最好的啦! 下面进入正题: 前提准备: 1. 项目中至少需要引入的jar包,注意版本: a)  ...

  8. Windows服务的创建、安装、卸载

    1.新建Window服务项目 2.添加安装配置文件 3.serviceProcessInstaller1右键属性,设置Account属性为LocalSystem. serviceInstaller1右 ...

  9. autotools归纳

    最近接触到许多linux项目,其编译都是使用的autotools. autotools是一个自动化的编译工具.个人理解它的最主要功能就是生成Makefile. 因为直接写Makefiel,其依赖关系还 ...

  10. 读书笔记 effective c++ Item3 在任何可能的时候使用 const

    Const可以修饰什么?   Const 关键字是万能的,在类外部,你可以用它修饰全局的或者命名空间范围内的常量,也可以用它来修饰文件,函数和块作用域的静态常量.在类内部,你可以使用它来声明静态或者非 ...