您的位置:首页 > 其它

简化富文本的使用

2015-08-13 21:24 344 查看
简化富文本的使用



效果



说明

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


细节

结构图



抽象类的设计

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: