• 简化富文本的使用


    简化富文本的使用

    效果

    说明

    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

    细节

    结构图

    抽象类的设计

  • 相关阅读:
    AJAX
    Aliyun服务器配置Redis
    Aliyun服务器配置MySQL
    Python基础之迭代器详解
    Python基础之函数
    Flask入门--URL
    认识Web
    肖知兴:企业的底层逻辑与企业家的突破(下)
    建造者模式(Bulider模式)详解
    为什么我强烈推荐你用枚举来实现单例模式
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4728152.html
Copyright © 2020-2023  润新知