如果文章对您有用,麻烦顺手点一下文章的广告吧~

东东

更新一个常用库HDCommonToolsSwift
之前写过OC版本的HDCommonTools,为不同的类型封装不同的Category,根据数据处理、文件管理、多媒...
扫描右侧二维码阅读全文
11
2020/07

更新一个常用库HDCommonToolsSwift

之前写过OC版本的HDCommonTools,为不同的类型封装不同的Category,根据数据处理、文件管理、多媒体管理、权限管理、系统信息、Appstore操作、加密解密。

Swift可以通过桥接文件来使用,但是如果集成到其他库的话还是挺麻烦的,所以就又根据最常用的功能封装了一个HDSwiftCommonTools,移除了OC版本冗余的功能,因为怕影响别人线上已有的业务,所以OC版本中没做修改。通过Swift的语法使用更丝滑~

一、导入项目

通过cocoapods导入

pod 'HDCommonToolsSwift'

通过文件导入

下载项目,将项目文件下的HDCommonToolsSwift文件夹里面的内容导入项目即可

二、API列表

已有的数据类型操作可以通过.hd的语法,其他操作可以通过HDCommonToolsSwift.shared单例来使用。

  • 单例和.hd使用没区别,单例会更统一简单,.hd语法的好处就是不需要在使用的地方导入
import HDCommonToolsSwift

UI相关

名称功能说明示例
func getCurrentNormalWindow()获取当前的NormalWindowHDCommonToolsSwift.shared.getCurrentNormalWindow()
func getCurrentVC()获取当前的ViewControllerHDCommonToolsSwift.shared.getCurrentVC()
func getImage(color: UIColor)通过颜色生成一张纯色背景图HDCommonToolsSwift.shared.getImage(color: UIColor.red) <br/>或者<br/> UIImage.hd.getImage(color: UIColor.red)
func getLinearGradientImage(colors: [UIColor], directionType: HDGradientDirection, size: CGSize = CGSize(width: 100, height: 100))生成线性渐变的图片HDCommonToolsSwift.shared.getLinearGradientImage(colors: [UIColor.red, UIColor.black, UIColor.blue] <br/>或者<br/> UIImage.hd.getLinearGradientImage(colors: [UIColor.red, UIColor.black, UIColor.blue], directionType: .leftToRight)
func getRadialGradientImage(colors: [UIColor], raduis: CGFloat, size: CGSize = CGSize(width: 100, height: 100))生成角度渐变的图片HDCommonToolsSwift.shared.getRadialGradientImage(colors: [UIColor.red, UIColor.black, UIColor.blue], raduis: 45) <br/>或者<br/> UIImage.hd.getRadialGradientImage(colors: [UIColor.red, UIColor.black, UIColor.blue], raduis: 45)
func getColor(hexString: String, alpha: CGFloat = 1.0)通过十六进制字符串获取颜色UIColor(hexString: "#FFFFFF") <br/>或者<br/> UIColor.hd.color(hexString: "#FFFFFF")
func UIColor(hexValue: Int, darkHexValue: Int = 0x333333, alpha: Float = 1.0, darkAlpha: Float = 1.0)通过十六进制获取颜色UIColor(hexValue: 0xffffff) <br/>或者<br/> UIColor.hd.color(hexValue: 0xffffff)
UIScreenWidth屏幕宽度
UIScreenHeight屏幕高度
HD_StatusBar_Height状态栏高度
func HD_Default_NavigationBar_Height(vc: UIViewController? = nil)导航栏高度HD_Default_NavigationBar_Height()
func func HD_Default_Tabbar_Height(vc: UIViewController? = nil)tabbar高度HD_Default_Tabbar_Height()
func addLayerShadow(color: UIColor, offset: CGSize, radius: CGFloat, cornerRadius: CGFloat? = nil)为view添加阴影view.hd.addLayerShadow(color: UIColor.black, offset: CGSize(width: 2, height: 0), radius: 10)
func setFrame(x: CGFloat? = nil, y: CGFloat? = nil, width: CGFloat? = nil, height: CGFloat? = nil)view单独设置Frame的某个值view.hd.setFrame(x: 10)

系统和软件信息

名称功能说明示例
func getAppVersionString()获取软件版本HDCommonToolsSwift.shared.getAppVersionString()
func getAppBuildVersionString()获取软件构建版本HDCommonToolsSwift.shared.getAppBuildVersionString()
func getIOSVersionString()获取系统的iOS版本HDCommonToolsSwift.shared.getIOSVersionString()
func getIOSLanguageStr()获取系统语言HDCommonToolsSwift.shared.getIOSLanguageStr()
func getBundleIdentifier()获取软件Bundle IdentifierHDCommonToolsSwift.shared.getBundleIdentifier()
func getSystemHardware()获取本机机型标识HDCommonToolsSwift.shared.getSystemHardware()
func getSystemUpTime()获取本机上次重启时间HDCommonToolsSwift.shared.getSystemUpTime()
func getIDFAString(idfvIfFailed: Bool = true)模拟软件唯一标示HDCommonToolsSwift.shared.getIDFAString()
func getMacAddress()获取手机WIFI的MAC地址,需要开启Access WiFi informationHDCommonToolsSwift.shared.getMacAddress()
func openSystemSetting()打开系统设置HDCommonToolsSwift.shared.openSystemSetting()
func openAppStorePage(openType: HDOpenAppStoreType, appleID: String)打开软件对应的App Store页面HDCommonToolsSwift.shared.openAppStorePage(openType: .app, appleID: "1123211")
func openAppStoreReviewPage(openType: HDOpenAppStoreType, appleID: String = "")打开软件对应的评分页面HDCommonToolsSwift.shared.openAppStoreReviewPage(openType: .app)

软件权限

名称功能说明示例
func requestPermission(type: HDPermissionType, complete: @escaping ((HDPermissionStatus) -> Void))请求权限HDCommonToolsSwift.shared.requestPermission(type: .notification) { (status) in print("权限设置回调", status) }
func checkPermission(type: HDPermissionType, complete: @escaping ((HDPermissionStatus) -> Void))检测软件权限HDCommonToolsSwift.shared.checkPermission(type: .notification) { (status) in print("当前权限状态", status) }

多媒体操作

名称功能说明示例
func getVideoDuration(videoURL: URL) -> Double获取指定video的时长, 单位秒HDCommonToolsSwift.shared.getVideoDuration(videoURL: URL(fileURLWithPath: path))
func getVideoSize(videoURL: URL)获取指定视频的分辨率,支持本地或者网络地址HDCommonToolsSwift.shared.getVideoSize(videoURL: URL(fileURLWithPath: path))
func playMusic(url: URL?, repeated: Bool = false, audioSessionCategory: AVAudioSession.Category = AVAudioSession.Category.playback)播放音乐HDCommonToolsSwift.shared.playMusic(url: url, repeated: false)
func stopMusic()关闭音乐播放HDCommonToolsSwift.shared.stopMusic()
func playEffect(url: URL?, vibrate: Bool = false)播放音效,静音模式不会播放音效HDCommonToolsSwift.shared.playEffect(url: url, vibrate: true)
func startVibrate(repeated: Bool = false)开始震动HDCommonToolsSwift.shared.startVibrate()
func stopVibrate()结束震动HDCommonToolsSwift.shared.stopVibrate()

文件操作

名称功能说明示例
func getFileDirectory(type: HDFileDirectoryType)获取文件夹路径HDCommonToolsSwift.shared.getFileDirectory(type: .documents)
func createFileDirectory(in type: HDFileDirectoryType, directoryName: String)在指定文件夹中创建文件夹HDCommonToolsSwift.shared.createFileDirectory(in: .documents, directoryName: "filePath")
func getFileSize(filePath: URL)获取指定文件的大小HDCommonToolsSwift.shared.getFileSize(filePath: url)
func getFileDirectorySize(fileDirectoryPth: URL)获取指定文件夹的大小HDCommonToolsSwift.shared.getFileDirectorySize(fileDirectoryPth: url)

其他

名称功能说明示例
func compare(anotherDate: Date, ignoreTime: Bool = false)比较日期,设置是否忽略时间Date().hd.compare(anotherDate: date)
func subString(rang: NSRange)截取字符串string.hd.subString(rang: NSRange(location: 2, length: 5))
func unicodeDecode()unicode转中文"\u54c8\u54c8\u54c8".hd.unicodeDecode()
func unicodeEncode()字符串转unicode"哈哈是电话费".hd.unicodeEncode()
func base64Decode(lowercase: Bool = true)base64解码"5ZOI5ZOI5piv55S16K+d6LS5".hd.base64Decode()
func aes256Decrypt(password: String, ivString: String = "abcdefghijklmnop")aes256解密string.hd.aes256Decrypt(password: "password")
func aes256Encrypt(password: String, ivString: String = "abcdefghijklmnop")aes256加密string.hd.aes256Encrypt(password: "password")
func encryptString(encryType: HDEncryType, lowercase: Bool = true)字符串加密string.hd.encryptString(encryType: HDEncryType.md5) <br/> 支持md5/sha1/sha224/sha256/sha384/sha512/base64加密

三、其他

欢迎交流,互相学习

项目gitHub地址:https://github.com/DamonHu/HDCommonToolsSwift

Last modification:September 20th, 2020 at 09:55 am
如果觉得我的文章对你有用,请随意打赏: ☞已打赏列表

2 comments

  1. helloworld

    博客做的很cool哦;

    • 这个类似于Categories,但这样有个好处就是只用在全局引用一次头文件(.pch中);
    • 不好的地方是方法太多太散(没有分类),命名太长;
    • 其实没必要用.shared这样,而是用+类方法就可以了;
    • 可以这样分类方法:[Tools vc_getCurrent]、[Tools img_fromColor:]、[Tools device_systemVersion]等等;
    1. 东东
      @helloworld

      Categories的方案在这个库的OC版本用了,如果swift是用的OC版本的库,可以集成之后在pch文件引用就行了,这个swift版本更倾向于使用.hd的命名空间的方式去使用,比如

      "需要加密的字符串".hd.unicodeEncode()

      考虑过使用类方法直接调用,但是为了以前集成过OC的项目直接改成swift的,所以直接用原来的单例和函数名,这样迁徙的话改动会更少。偷个懒

Leave a Comment