适用于 Xcode 15+ 的资源重写器

此插件允许您自动重写 UIKit/SwiftUI 的图像和颜色实例化,将其从不可靠的基于字符串的初始化方式(例如)

UIImage(named: "some icon")
Image("some icon")
UIColor(named: "light blue green")
Color("light blue green")

转换为 ImageResourceColorResource 字面量 (如 Xcode 15 中引入的) (例如)

UIImage(resource: .someIcon)
Image(.someIcon)
UIColor(resource: .lightBlueGreen)
Color(.lightBlueGreen)

安装

Add to Target: None

dependencies: [
    .package(url: "https://github.com/idrougge/ResourceRewriterForXcode.git", branch: "main"),
]

使用方法

重建后,在 Project Navigator 中右键单击您的项目(或软件包),将会弹出一个菜单,您会在其中找到选项“Rewrite image resource strings”(重写图像资源字符串)和“Rewrite colour resource strings”(重写颜色资源字符串)。 选择该选项,并选择您希望修复资源引用的目标。

Project menu

清理

由于 UIImage(named:) 初始化程序返回一个可选项,而 UIImage(resource:) 不返回可选项,因此您现在可能存在不再需要的 if letguard let 或 nil 合并 (??) 语句。 这些您需要自己修复,因为它超出了一个简单插件的能力范围。

如果您关闭了生成的资源符号,请进入您的构建设置并启用 Generate Asset Symbols (ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOLS),否则资源名称将无法解析。

完成后,您可以自由地再次删除此依赖项,并可能引入一条 linter 规则,禁止调用基于字符串的资源初始化程序。

限制