在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
swift版的StringAttribute
效果
源码 https://github.com/YouXianMing/Swift-StringAttribute // // StringAttributeProtocol.swift // Swift-StringAttribute // // Created by YouXianMing on 15/10/8. // Copyright © 2015年 YouXianMing. All rights reserved. // import Foundation @objc protocol StringAttributeProtocol { /** 富文本属性名字 - returns: 属性名字 */ func attributeName() -> NSString; /** 属性对应的值 - returns: 对应的值 */ func attributeValue()-> AnyObject; /** 属性设置生效范围 - returns: 生效范围 */ optional func effectiveStringRange() -> NSRange; } // // StringAttribute.swift // Swift-StringAttribute // // Created by YouXianMing on 15/10/8. // Copyright © 2015年 YouXianMing. All rights reserved. // import UIKit class StringAttribute: NSObject, StringAttributeProtocol { // MARK: 公用的属性 /// 富文本生效范围 var effectRange : NSRange! = NSMakeRange(0, 0) // MARK: 公用的方法 /** 属性有效范围 - returns: 有效范围 */ func effectiveStringRange() -> NSRange { return effectRange } // MARK: ==由子类重写的方法== /** ///////////////// 由子类重写 ///////////////// 属性名字 - returns: 属性名字 */ func attributeName() -> NSString { fatalError("must be overwrote by subclass") } /** ///////////////// 由子类重写 ///////////////// 属性值 - returns: 属性值 */ func attributeValue()-> AnyObject { fatalError("must be overwrote by subclass") } } // // NSMutableAttributedString+StringAttribute.swift // Swift-StringAttribute // // Created by YouXianMing on 15/10/8. // Copyright © 2015年 YouXianMing. All rights reserved. // import Foundation extension NSMutableAttributedString { /** 添加富文本对象 - parameter stringAttribute: 实现了StringAttributeProtocol协议的对象 */ func addStringAttribute(stringAttribute : StringAttributeProtocol) { self.addAttribute(stringAttribute.attributeName() as String, value: stringAttribute.attributeValue(), range: stringAttribute.effectiveStringRange!()) } /** 消除指定的富文本对象 - parameter stringAttribute: 实现了StringAttributeProtocol协议的对象 */ func removeStringAttribute(stringAttribute : StringAttributeProtocol) { self.removeAttribute(stringAttribute.attributeName() as String, range: stringAttribute.effectiveStringRange!()) } }
分析
|
请发表评论