简化富文本的使用

简介:

简化富文本的使用

 

效果

 

说明

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

细节

结构图

抽象类的设计


目录
相关文章
|
8月前
|
前端开发 JavaScript
使用JavaScript实现复杂功能:构建一个自定义的拖拽功能
使用JavaScript实现复杂功能:构建一个自定义的拖拽功能
|
8月前
|
移动开发
Uniapp 多功能富文本编辑组件 可多端使用 H5插入
Uniapp 多功能富文本编辑组件 可多端使用 H5插入
173 0
|
2月前
|
Python
贴代码框架PasteForm特性介绍之markdown和richtext
【11月更文挑战第11天】本文介绍了 Markdown 和 RichText 在 PasteForm 中的支持特性。Markdown 是一种轻量级标记语言,支持标题、列表、链接、引用和代码块等语法,具有简洁性和通用性的优势。RichText 则是一种包含多种文本格式、图像和表格的富文本格式,支持字体、字号、文本样式、颜色设置等,具有表现力丰富和兼容性好的特点。两者结合使 PasteForm 能够处理和展示多样化的文本内容。
|
3月前
扩展uview表单组件标题文本支持两端对齐
扩展uview表单组件标题文本支持两端对齐
137 2
|
6月前
|
JavaScript 数据库
文本,在线浏览PDF,一个最简单的文档标准样式,文档预览非常简单的样式,文档管理样式设计,标准,好的设计
文本,在线浏览PDF,一个最简单的文档标准样式,文档预览非常简单的样式,文档管理样式设计,标准,好的设计
|
8月前
|
前端开发
什么是抽离样式模块如何使用
什么是抽离样式模块如何使用
71 0
|
8月前
|
编解码 前端开发 JavaScript
前端常用的几种布局方式(易懂版)
前端常用的几种布局方式(易懂版)
117 0
fastadmin框架获取富文本内容(不过滤HTML标签)
fastadmin框架获取富文本内容(不过滤HTML标签)
370 0
uiu
|
前端开发 JavaScript 编译器
【Svelte】-(1)基础知识 / 快速上手 / 添加数据 / 动态属性 / CSS样式 / 嵌套组件 / HTML标签
【Svelte】-(1)基础知识 / 快速上手 / 添加数据 / 动态属性 / CSS样式 / 嵌套组件 / HTML标签
uiu
317 0
【Svelte】-(1)基础知识 / 快速上手 / 添加数据 / 动态属性 / CSS样式 / 嵌套组件 / HTML标签
|
前端开发
【网页前端】CSS样式表进阶之图像的灵活使用与拓展知识(一)
本期主要介绍CSS样式表进阶之图像的灵活使用与拓展知识
125 0
【网页前端】CSS样式表进阶之图像的灵活使用与拓展知识(一)