码迷,mamicode.com
首页 > 其他好文 > 详细

简化富文本的使用

时间:2015-08-13 21:55:27      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

简化富文本的使用

技术分享

 

效果

技术分享

 

说明

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://www.cnblogs.com/YouXianMing/p/4728152.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!