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

    细节

    结构图

    抽象类的设计

  • 相关阅读:
    小梦windows phone 8.1开发:语音朗读
    windows phone 8.1开发:socket通信聊天
    windows phone 8.1开发:触控和指针事件1
    Windows Phone 8.1开发:触控和指针事件2
    windows phone 8.1开发 onedrive操作详解
    windows phone 8.1开发SQlite数据库引用安装
    利用Register protocol实现网页调用桌面程序(类似迅雷、QQ等)
    windows phone 8.1开发SQlite数据库操作详解
    xrandr
    mongodb
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4728152.html
Copyright © 2011-2022 走看看