zoukankan      html  css  js  c++  java
  • 简化富文本的使用

    简化富文本的使用

    效果

    说明

    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

    细节

    结构图

    抽象类的设计

  • 相关阅读:
    【转】Oracle中的decode在mysql中的等价实现
    Perhaps you are running on a JRE rather than a JDK
    iisapp -a命令出现 :此脚本不能与WScript工作
    HDU 6070 线段树
    HDU 1853 MCMF
    Codeforces 7C 扩展欧几里得
    HDU 5675 智慧数
    Lucas 大组合数
    bzoj 2179 FFT
    POJ 1155 树形背包
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4728152.html
Copyright © 2011-2022 走看看