简化富文本的使用
2015-08-13 21:24
344 查看
简化富文本的使用
![](http://images0.cnblogs.com/blog2015/607542/201508/131831177079103.gif)
效果
![](http://images0.cnblogs.com/blog2015/607542/201508/131832391601085.png)
说明
1. 如果不进行任何的封装,直接使用富文本会破坏可读性,代码可读性极差
2. 本例子提供了维护性较强的封装
3. 本人仅仅实现了两种富文本的实例(设置文本字体以及文本属性),剩下的可以参考本人的实现来进行扩展
* 4. 每一种富文本属性都应该抽象成一个类,而通过统一的接口进行管理(本例子中,仅仅实现了设置字体以及文本属性两个类)
源码
https://github.com/YouXianMing/StringAttribute
细节
结构图
![](http://images0.cnblogs.com/blog2015/607542/201508/131842453326463.png)
抽象类的设计
![](http://images0.cnblogs.com/blog2015/607542/201508/131831177079103.gif)
效果
![](http://images0.cnblogs.com/blog2015/607542/201508/131832391601085.png)
说明
1. 如果不进行任何的封装,直接使用富文本会破坏可读性,代码可读性极差
2. 本例子提供了维护性较强的封装
3. 本人仅仅实现了两种富文本的实例(设置文本字体以及文本属性),剩下的可以参考本人的实现来进行扩展
* 4. 每一种富文本属性都应该抽象成一个类,而通过统一的接口进行管理(本例子中,仅仅实现了设置字体以及文本属性两个类)
源码
https://github.com/YouXianMing/StringAttribute
// // StringAttribute.h // AttributeString // // Created by YouXianMing on 15/8/3. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> #import "StringAttributeProtocol.h" @interface StringAttribute : NSObject <StringAttributeProtocol> /** * 富文本设置的生效范围 */ @property (nonatomic) NSRange effectRange; @end
// // StringAttribute.m // AttributeString // // Created by YouXianMing on 15/8/3. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import "StringAttribute.h" @implementation StringAttribute - (NSString *)attributeName { return nil; } - (id)attributeValue { return nil; } - (NSRange)effectiveStringRange { return self.effectRange; } @end
// // StringAttributeProtocol.h // AttributeString // // Created by YouXianMing on 15/8/3. // Copyright (c) 2015年 YouXianMing. All rights reserved. // #import <Foundation/Foundation.h> @protocol StringAttributeProtocol <NSObject> #pragma mark - 必须实现 @required /** * 属性名字 * * @return 属性名字 */ - (NSString *)attributeName; /** * 属性对应的值 * * @return 对应的值 */ - (id)attributeValue; @optional #pragma mark - 可选实现 /** * 属性设置生效范围 * * @return 生效的范围 */ - (NSRange)effectiveStringRange; @end
细节
结构图
![](http://images0.cnblogs.com/blog2015/607542/201508/131842453326463.png)
抽象类的设计
![](http://images0.cnblogs.com/blog2015/607542/201508/131850174106384.png)
相关文章推荐
- 安装Win7ghost 之后,发现鼠标和键盘没有反应,失效
- [leetcode] Remove Nth Node From End of List 删除链表开始的第n个元素
- 黑马程序员——Java基础--面向对象(1)
- 贴瓷砖(AC_AUTOMAN)
- Reverse Linked List(****)
- 关于pymongo两种连接方法MongoClient和Connection连接mongodb的写入效率分析
- HDOJ Arc of Dream 4686【矩阵快速幂】
- FineReport使用总结
- PAT 1063. Set Similarity (25)
- socket select模型
- 数组的常用算法(3) - 哈达玛矩阵
- UI10_tableview的编辑
- UI0_cell自适应高度
- hdu 5288 OO’s Sequence
- 【Android基础】Android中的Intent详解
- Mysql函数(内置函数,自定义函数)
- C#动态加载/卸载Assembly的解决方案
- POJ 3620--Avoid The Lakes【DFS】
- A20开发之cubie2 编译过程详解(一)
- POJ 1006 Biorhythms (中国剩余定理)