美文网首页
SwiftGen 在 Swift5 + SwiftUI 下的配置

SwiftGen 在 Swift5 + SwiftUI 下的配置

作者: Wavky | 来源:发表于2021-07-10 22:53 被阅读0次

    GitHub 链接:SwiftGenConfigForSwiftUI

    使用环境

    • Swift 5
    • SwiftUI
    • 不使用 storyboard 和 xib
    • 不勾选 Use Base Internationalization
    • 本地化(默认英语)

    已验证适配部分

    • String 资源
    • xcassets 图片资源
    • xcassets 颜色资源

    安装

    brew install swiftgen
    

    配置

    配置文件

    配置文件下载位置:config files

    将三个配置文件放置在项目根目录下:

    • swiftgen.yml:SwiftGen 配置文件
    • swiftui-assets-template.stencil:与 SwiftUI 适配的 xcassets 模板
    • swiftui-strings-template.stencil:与 SwiftUI 适配的 String 模板

    项目结构参考:

    ${PROJECT}
    ├── swiftgen.yml
    ├── swiftui-assets-template.stencil
    ├── swiftui-strings-template.stencil
    └── ${PROJECT}
        ├── Generated
        ├── Resources
        │   ├── Color.xcassets
        │   ├── Image.xcassets
        │   └── Localizable.strings
        ├── App.swift
        ├── ContentView.swift
        ├── Info.plist
        ├── InfoPlist.strings
        ├── ${PROJECT}.entitlements
        └── Preview Content
    

    添加编译脚本

    1. 点击导航栏的项目文件
    2. 选择 TARGETS - Build Phases
    3. 点击窗口左上角 + 按钮,选择 New Run Script Phase
    4. 添加一句脚本
    swiftgen
    

    生成索引辅助类

    1. ⌘B 执行项目编译
    2. 左侧文件导航栏中右键:Add Files to …
    3. 选择在 Generated 目录下生成的文件,添加到项目中即可(不要勾选复制)

    在 SwiftUI 中使用

    Image(Asset.Image.image_name.name) // 图片类资源
    Text(L10n.text_name.key) // 文本类资源
        .foregroundColor(
            Asset.Color.color_name.color // 颜色资源
        )
    
    L10n.text_name.text // 返回 String 类型
    Asset.Color.color_name.nsColor // 返回 NSColor 类型
    Asset.Color.color_name.uiColor // 返回 UIColor 类型
    

    其他

    配置文件语法参考:
    SwiftGen/ConfigFile.md at stable · SwiftGen/SwiftGen · GitHub

    关于对 SwiftUI(LocalizedStringKey) 提供支持的讨论:
    SwiftUI use of LocalizedStringKey · Issue #685 · SwiftGen/SwiftGen · GitHub

    相关文章

      网友评论

          本文标题:SwiftGen 在 Swift5 + SwiftUI 下的配置

          本文链接:https://www.haomeiwen.com/subject/zayhpltx.html