HBSwiftTools
本库是个人总结的一些常用类扩展及通用方法,会不定期更新。
支持 Cocoapods 安装:
pod 'HBSwiftTools'
现有文件
文件名 | 描述 |
---|---|
CIFilter+HB.swift | CIFilter 的扩展 |
Data+HB.swift | Data 的扩展 |
Dictionary+HB.swift | Dictionary 的扩展 |
DispatchTime+HB.swift | DispatchTime 的扩展 |
HBPublicFunctions.swift | 公共的全局方法 |
String+HB.swift | String 的扩展 |
UIButton+HB.swift | UIButton 的扩展 |
UICollectionView+HB.swift | UICollectionView 的扩展 |
UIColor+HB.swift | UIColor 的扩展 |
UIControl+HB.swift | UIControl 的扩展 |
UIImage+HB.swift | UIImage 的扩展 |
UITableView+HB.swift | UITableView 的扩展 |
UIView+HB.swift | UIView 的扩展 |
<style> b { font-size: 20px; } </style>
CIFilter+HB.swift
这个文件是 CIFilter 的相关扩展,由于系统对 CIFilter 的初始化方法不太友好,所以这里也扩展了对它的初始化方法。
系统的初始化方法是传入一个 name 字符串,天晓得当初的那个“猿”是怎么想的,竟设计出这样牛逼的 API,主要是这些字符串实在不好记,不好写,好在有个 API 是获取这些字符串数组的,所以我把这些字符串都拿了出来,封装成了 CIFilterName
枚举值,这样好记一些。
对我来说,这个类用得最多的还是生成二维码,所以对生成二维码相关又进行了一些封装。
首先是对容错级别封装成了 QRCorrectionLevel
枚举;
再就是对相应的 Filter 初始化进行了封装。
API | 描述 |
---|---|
init?(name: CIFilterName) |
根据传入的 CIFilterName 枚举值生成 CIFilter 实例 |
init?(qrText: String, correctionLevel: QRCorrectionLevel = .M) |
根据传入的字符串和 QRCorrectionLevel 枚举值生成一个 CIQRCodeGenerator 实例 |
Data+HB.swift
API | 描述 |
---|---|
var md5: String |
获取二进制文件的 md5 值 |
Dictionary+HB.swift
API | 描述 |
---|---|
func string(for key: Key) -> String |
返回字典对应 key 下的 String 类型的 value |
func int(for key: Key) -> Int |
返回字典对应 key 下的 Int 类型的 value |
func bool(for key: Key) -> String |
返回字典对应 key 下的 Bool 类型的 value |
func float(for key: Key) -> String |
返回字典对应 key 下的 Float 类型的 value |
func double(for key: Key) -> String |
返回字典对应 key 下的 Double 类型的 value |
func HBValue<T>(_ key: Key, default: T) -> T |
返回字典对应 key 下的 T 类型的 value; 如字典为 ["name": "Jim"], 若传入 default == 0: Int, 则因为 "Jim" 转换成 Int 类型会失败,所以方法将返回 0 |
DispatchTime+HB.swift
给 DispatchTime
添加了两个用 Int
和 Double
类型初始化的方法,方便在 asyncAfter
方法中的调用。
eg:
//延时2秒执行
DispatchQueue.main.asyncAfter(deadline: 2) {
// do something
}
//延时1.5秒执行
DispatchQueue.main.asyncAfter(deadline: 1.5) {
// do something
}
HBPublicFunctions.swift
定义了一些公共的全局方法。
API | 描述 |
---|---|
public func HBInMainThread(_ handler: @escaping ()>Void) |
在主线程执行代码的 Closure |
public var DocumentPath: String |
获取 Documents 文件夹的路径 |
public func FolderPathInDocuments(with folderName: String) -> String |
获取在“Documents”文件夹下的文件夹路径,若不存在则创建 |
String+HB.swift
String的扩展方法。
API | 描述 |
---|---|
func subString |
字符串截取。例如:"0123456789".subString(3..<7) |
func toRange(range: NSRange) -> Range |
NSRange 转 Range |
func toNSRange(range: Range |
Range |
func range(with str: String) -> NSRange? |
获取子字符串在字符串中的位置 |
var intValue: Int |
字符串转 Int,取值失败返回 NSNotFound |
var floatValue: Float |
字符串转 Float,取值失败返回 Float(NSNotFound) |
var doubleValue: Double |
字符串转 Double,取值失败返回 Double(NSNotFound) |
var UIntValue: UInt |
字符串转 UInt,取值失败返回 UInt(NSNotFound) |
var UInt8Value: UInt8 |
字符串转 UInt8,取值失败返回 UInt8(NSNotFound) |
var UInt16Value: UInt16 |
字符串转 UInt16,取值失败返回 UInt16(NSNotFound) |
var UInt32Value: UInt32 |
字符串转 UInt32,取值失败返回 UInt32(NSNotFound) |
var UInt64Value: UInt64 |
字符串转 UInt64,取值失败返回 UInt64(NSNotFound) |
var boolValue: Bool |
字符串转 Bool,取值失败返回 false |
var md5: String |
获取字符串的md5值 |
var data: Data |
字符串转 Data |
func convertToImage() -> UIImage? [^toImage] |
base64字符串转图片 |
UIButton+HB.swift
API | 描述 |
---|---|
func set(title: String?, titleColor: UIColor?, for state: UIControl.State) |
设置按钮的文本、文本颜色 |
UICollectionView+HB.swift
API | 描述 |
---|---|
func registerCells(_ cellClasses: AnyClass ...) |
注册多个cell,传入cell类型,对应identifier == "(class)" |
func registerSectionHeaders(_ viewClasses: AnyClass ...) |
注册多个区头,传入view类型,对应identifier == "(class)" |
func registerSectionFooters(_ viewClasses: AnyClass ...) |
注册多个区尾,传入view类型,对应identifier == "(class)" |
UIColor+HB.swift
API | 描述 |
---|---|
便利构造函数?(_ hexStr: String, alpha: CGFloat = 1) |
生成十六进制颜色 |
便利构造函数(_ hexInt: Int, alpha: CGFloat = 1) |
生成十六进制颜色 |
UIControl+HB.swift
API | 描述 |
---|---|
便利构造函数(_ hexInt: Int, alpha: CGFloat = 1) |
使用事件触发方式Event,及事件回调Closure初始化一个控件 |
UIImage+HB.swift
API | 描述 |
---|---|
便利构造函数?(_ qrText: String, width: CGFloat = 100) |
根据文案生成二维码图片 |
var qrText: String? |
识别二维码图片的文案 |
var base64String: String [^toString] |
图片转base64字符串 |
func zoom(to: CGSize) -> UIImage |
图像缩放,若失败则返回一个size == (0, 0)的实例 |
便利构造函数?(_ color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) |
根据颜色生成一张纯色的图片 |
UITableView+HB.swift
API | 描述 |
---|---|
func registerCells(_ cellClasses: AnyClass ...) |
注册多个cell,传入cell类型,对应identifier == "(class)" |
func registerHeaderFooterViews(_ viewClasses: AnyClass ...) |
注册多个区头或区尾,传入view类型,对应identifier == "(class)" |
UIView+HB.swift
API | 描述 |
---|---|
var x: CGFloat |
获取或设置view的minX |
var y: CGFloat |
获取或设置view的minY |
var width: CGFloat |
获取或设置view的width |
var height: CGFloat |
获取或设置view的height |
func addSubViews(_ views: UIView ...) |
添加多个子视图 |
[^toImage]: 可以转图片的字符串,必须是由图片转换成的base64字符串。
[^toString]: 图片转换成base64字符串,可以用func convertToImage() -> UIImage?
方法再转成图片。