Color Mode


    Language

SwiftGen

November 11, 2019

SwiftGen is a tool to auto-generate Swift code for resources of your projects, to make them type-safe. You can organize and manage your resources by using auto-generated swift code.

You can use SwiftGen for assets, colors, core data, fonts, interface builder files, JSON & YAML files, plists and localizable strings.

Installation

There are many ways of installing SwiftGen with project. I'll use CocoaPods.

  1. Open terminal, navigate to your project and run pod init.

  2. Add pod 'SwiftGen' to your pod file.

  3. Run pod install.

  4. To invoke SwiftGen, go to Build Phases -> Add New Run Script Phase and add

    ${PODS_ROOT}/SwiftGen/bin/swiftgen[]()
    

    Everytime we build, SwiftGen is going to run and update all resources.

Configuration file

  • Create swiftgen.yml configuration file.

  • You can write inputs and outputs for the resources for which you want to generate swift code. Each action (xcassets, colors, fonts) in configuration file will generate constants for that type of input file. Inside output option templateName, define the Stencil template to use See more info here to generate the output.

    Let's see example for images, colors and fonts. Add the below lines of code in swiftgen.yml file.

    **Images**
    
    	xcassets:
    	    inputs: Path/Assets.xcassets
    	    outputs:
    	        - templateName: swift4
    	          output: Path/SwiftGen/assets.swift
    
    **Colors**
    
    	colors:
    	    inputs: Path/CustomAppColors.txt
    	    outputs:
    	        - templateName: swift4
    	          output: Path/SwiftGen/colors.swift
    
    **Fonts**
    
    	fonts:
    	    inputs: Path/Fonts
    	    outputs:
    	        - templateName: swift4
    	          output: Path/SwiftGen/fonts.swift
    

Usage

  1. Add some resources to input files so we can test it.

    Images

    Add some Images to Assets.xcassets. For eg: I've added image named with header.png.

    Colors

    I've created CustomAppColors.txt file and added hex color

    lightPurple         : #EBEEFF
    

    Fonts

    Create fonts folder and add font files .ttf/.otf. For eg: I've added font

    Roboto-Regular.ttf
    
  2. Create new group and name it SwiftGen. The generated output files will go inside this folder.

  3. After building project, Click SwiftGen Folder -> Show in Finder, drag and drop auto-genetrated assets.swift, colors.swift and fonts.swift files.

  4. You can use generated code for images, colors and fonts like

    **Images**
    
    	let myImage = Asset.header.image
    	or
    	let myImage =  UIImage(named: Asset.header.name)
    
    **Colors**
    
    	let myColor = ColorName.lightPurple.color
    	or
    	let myColor = UIColor(named: .lightPurple)
    
    **Fonts**
    
    	let myFont = FontFamily.Roboto.regular.font(size: 20.0)
    	or
    	let myFont = UIFont(font: FontFamily.Roboto.regular, size: 20.0)
    

Advantages

  • Avoid typos thanks to type safety.

  • Free auto-completion.

  • Avoid the risk of using an non-existing asset name.

  • All this will be ensured by the compiler.

References

https://github.com/SwiftGen/SwiftGen

swiftswiftgeniosresources

Author

Jigna Patel

Jigna Patel

iOS Developer

Always curious about learning new things

You may also like

September 8, 2023

Strengthening our AI knowledge on mobile apps

In today's digital age, mobile applications have become an integral part of our daily lives. From ordering food to managing finances, there seems to be an app for every need. Behind the scenes, these apps are powered by a technology that has revolutionize...

Dinakar MauryaWarren HarrodAntonin JolyEnric Macias Lopez

Dinakar Maurya, Warren Harrod, Antonin Joly, Enric Macias Lopez

iOSAndroid

September 6, 2023

How to create an Interactive Experience using the Spatial Creator Toolkit

Spatial is a metaverse platform that allows anyone to create immersive 3D spaces, which can be instantly shared to the Web, iOS, Android, and VR, and explored by others. The Spatial Creator Toolkit, powered by Unity, allows you to add even more interactiv...

Nairah Thaha

Nairah Thaha

Immersive Technologies

ServicesCasesAbout Us
CareersThought LeadershipContact
© 2022 Monstarlab
Information Security PolicyPrivacy PolicyTerms of Service