YMKit
YMKit 是一个工具集合,可以加快并简化 iOS 应用开发。
该框架提供了一系列小巧的技巧,例如从 HEX 值初始化 UIColor
,字符串本地化,日期和数字格式化等。
使用示例
以下是一些如何让 YMKit 让您的工作更简单的示例。
本地化字符串
当您需要在运行时用本地化值替换可本地化的字符串键时,通常的做法是这样做
// Without arguments
let helloWorld = NSLocalizedString("HelloWorldKey", comment: "")
// With arguments
let greeting = String(format: NSLocalizedString("LocalizableGreetingKey", comment: ""), firstName, lastName)
使用 YMKit,会更简洁和简单
// Without arguments
let helloWorld = "HelloWorldKey".localized
// With arguments
let greeting = "LocalizableGreetingKey".localized(with: firstName, lastName)
UIColor
从 HEX
当您需要解析 HEX 颜色字符串时(例如 #ff4600
),情况变得如此糟糕,我甚至不想展示。
然而,使用 YMKit,只需要一行代码即可获取 UIColor
实例。
let myColor = UIColor(hexString: "#ff4600")
此单个初始化器与三位(#fff
)和六位(#aeaeae
)代码兼容;带或不带 #
字符。
UIColor
提取单个RGB通道
从如果你曾经需要从UIColor
中提取单个通道,那么你肯定知道这是一场混乱,变量只用一次,输入-输出参数等等。
YMKit将使你的生活变得更轻松——更加轻松
let green = myColor.getRGBComponent(.green)
CMYK支持将在稍后推出。
数字格式化
针对不同区域格式化数字(例如价格)并非易事。幸运的是,你不必记住所有国家的格式——Foundation的NumberFormatter
会帮你处理。不幸的是,使用它很快就会变得过于啰嗦。
YMKit采取了一种更声明性的方法。
假设你需要展示一个根据用户的区域显示格式化、最多保留两位小数的欧元价格。以下是如何使用NumberFormatter
实现的
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .currency
numberFormatter.locale = .current
numberFormatter.currencyCode = currencyCode
numberFormatter.minimumIntegerDigits = 1
numberFormatter.minimumFractionDigits = 0
numberFormatter.maximumFractionDigits = 2
let priceString = numberFormatter.string(from: NSNumber(value: myItem.price))
以下是使用YMKit的实现方式
let priceString = myItem.price.getBasicPriceString(maxFractionDigits: 2, currencyCode: myItem.currencyCode)
当然还有许多其他自定义选项:"有效数字"、"分组分隔符"和货币符号字面量只是其中的几个例子。如果这些还不够,你甚至可以使用一个闭包并手动设置剩余的属性(如上面的第一个例子所示):使用起来会更方便,因为你不必手动创建和管理NumberFormatter
对象的生命周期。
安装
有多种方法可以安装YMKit并保持其更新。
Swift包管理器
将YMKit添加到项目中最简单的方法是使用Swift包管理器(SPM)。Xcode 11已经内置了SPM客户端,因此你可以使用GUI。点击文件 → Swift包 → 添加包依赖…,将YMKit仓库URL(https://github.com/yakovmanshin/YMKit
)粘贴到搜索字段中,并选择首选更新策略(大多数使用中更新到下一个主要版本应该没问题)。
Xcode 将会不定时检查符合指定更新策略的新版本。您始终可以手动检查更新: 文件 → Swift 包 → 更新到最新包版本。
如果您更喜欢手动操作 Package.swift
文件,或者需要在您的 Swift 包中使用 YMKit 作为依赖项,请将以下条目添加到 Package.swift
文件中的 dependencies
数组中。
.package(url: "https://github.com/yakovmanshin/YMKit.git", from: "3.0.0")
如果您想了解更多关于 Swift 包和 SPM 的信息,可以参考这个 WWDC 会话。
CocoaPods
或者,您可以使用 CocoaPods 来安装 YMKit。如果您以前从未使用过 CocoaPods,请观看这个详细(并富有趣味)的 Google 视频教程,了解如何安装和使用此工具。
要安装 YMKit,请将以下内容添加到您的 Podfile 中
pod 'YMKit', '~>3.0'
在您的项目目录中运行以下命令以安装新添加的库
pod install
从现在开始,请使用创建/更新的 .xcworkspace
(而非 .xcodeproj
)来处理您的应用程序。
XCFramework
二进制 XCFramework
是框架分发的二进制格式,它解决了二进制框架最常见的麻烦问题:架构不兼容。一个包包含所有受支持架构的版本:物理设备(armv7
和 arm64
)和模拟器(i386
和 x86_64
)。有关二进制框架和 XCFramework
的更多信息,请参阅这个 WWDC 会话。
您可以在 版本发布页面 中找到从 v2.0.0 版本开始附加到 YMKit 发布的二进制 XCFramework
文件。要使用这些文件之一,只需将其解压并将 XCFramework
包拖动到目标 通用 设置中的 框架、库和嵌入式内容 部分。
请注意,目前 XCFramework
没有自动更新功能。每次发布新版本时,您都必须重复上述步骤。
通用使用提示
与所有框架一样,您需要在要使用其方法的文件中导入 YMKit。您可能之前已经做过这件事:最简单的一个例子就是 UIKit。建议将所有导入语句放在代码文件顶部,但实际上您可以在任何地方做。无论如何,只需在您的 .swift
文件中添加以下内容
import YMKit
这里有一个专业提示。您可以在项目中一次性激活所有内置类型的扩展(例如 Date
、UIColor
、String
等)—to do it, import YMKit in AppDelegate.swift
。
// AppDelegate.swift
import UIKit
// Import YMKit here:
import YMKit
// That's it!
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
// ...
这种修改不能与在YMKit中声明的类型一起使用,例如 YMFormatter
:要使用它们,你还是需要在单个代码文件中导入YMKit。
深入文档
我的最终目标是 Cover 100% 的类型、属性和方法,提供准确、详尽和广泛的文档。目前,这个比例接近 90%。
要查看给定类型、属性或方法的文档,只需选择其名称的选项,就会出现熟悉的弹出窗口。当然,您也可以浏览源文件。
感谢 Jazzy,YMKit 的文档也可在kit.ym.dev 上在线查看。然而,它仅针对最新发布版本有效。