美文网首页
【iOS】Swift版属性字符串

【iOS】Swift版属性字符串

作者: 刘大帅 | 来源:发表于2015-10-09 15:44 被阅读530次

参考文章

Swift-StringAttribute


源码

import Foundation

@objc protocol AttributeStringProtocol {

    /**
    富文本属性名称
    
    - returns: 属性名称
    */
    func attributeName() -> NSString
    
    /**
    属性对应的值
    
    - returns: 对应的值
    */
    func attributeValue() -> AnyObject
    
    /**
    属性设置生效范围
    
    - returns: 生效范围
    */
    optional func effectiveRange() -> NSRange
}  
import Foundation

extension NSMutableAttributedString {

    /**
    添加富文本对象
    
    - parameter stringAttribute: 实现了AttributeStringProtocol协议的对象
    */
    func addStringAttribute(stringAttribute : AttributeStringProtocol) {
    
        self.addAttribute(stringAttribute.attributeName() as String,
            value: stringAttribute.attributeValue(),
            range: stringAttribute.effectiveRange!())
        
    }
    
    /**
    删除指定的富文本对象
    
    - parameter stringAttribute: 实现了AttributeStringProtocol协议的对象
    */
    func removeStringAttribute(stringAttribute : AttributeStringProtocol) {
    
        self.removeAttribute(stringAttribute.attributeName() as String,
            range: stringAttribute.effectiveRange!())
    }
}  
import UIKit

class StringAttribute: NSObject, AttributeStringProtocol {
    
    // 富文本的生效范围
    var m_effectRange : NSRange! = NSMakeRange(0, 0)
    
    // MARK: AttributeStringProtocol
    func attributeName() -> NSString {
        
        fatalError("It have to be overwritten by subclass !")
    }
    
    func attributeValue() -> AnyObject {
        
        fatalError("It have to be overwritten by subclass !")
    }
    
    func effectiveRange() -> NSRange {
        
        return m_effectRange
    }

}  

分析

分析1.png 分析2.png

源码

下载源码

相关文章

网友评论

      本文标题:【iOS】Swift版属性字符串

      本文链接:https://www.haomeiwen.com/subject/xdmncttx.html