您的位置:首页 > 移动开发 > Swift

swift版的StringAttribute

2015-10-08 22:22 633 查看
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!())
}
}


分析





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: