Skip to content

azone/ThemeManager

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

ThemeManager

ThemeManager is a most lightweight, powerful, convenient and easiest way to manage your app themes, and also support change text(e.g. language) or other configurations dynamically too.

Installing ThemeManager

ThemeManager supports CocoaPods and Carthage. ThemeManager is written in Swift.

Github Repo

You can pull the ThemeManager Github Repo and include the ThemeManager.xcodeproj to build a dynamic or static library.

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. For usage and installation instructions, visit their website. To integrate ThemeManager into your Xcode project using CocoaPods, specify it in your Podfile:

pod 'WYZThemeManager'

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate ThemeManager into your Xcode project using Carthage, specify it in your Cartfile:

github "azone/ThemeManager" "master"

Swift Package Manager

The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler. It is in early development, but ThemeManager does support its use on supported platforms.

Once you have your Swift package set up, adding ThemeManager as a dependency is as easy as adding it to the dependencies value of your Package.swift.

dependencies: [
    .package(url: "https://github.com/azone/ThemeManager.git", from: "0.3.0")
]

Demo

Usage

1. implement your self theme, language or other configuration (may be class, struct or anything you want) which must be conform Theme protocol.

Example:

import ThemeManager

struct MyTheme: Theme {
   var backgroundColor = UIColor.gray
   var mainColor = UIColor.orange

   var titleFont = UIFont.preferredFont(forTextStyle: .headline)
   var subtitleFont = UIFont.preferredFont(forTextStyle: .subheadline)
   var textColor = UIColor.red

   var buttonTitleColor = UIColor.orange
   var buttonTitleHighlightcolor = UIColor.red
   
   var title = "Default Theme"
}

2. Declare ThemeManager instance variable with your default theme in the global scope.

Example:

let themeManager = ThemeManager(MyTheme())

3. Put any theme, language or configuration related setups in setUp method

Example

themeManager.setup(view) { (view, theme) in
    view.backgroundColor = theme.backgroundColor
}

themeManager.setup(navigationItem) { (item, theme) in
    item.title = theme.title
}

themeManager.setup(navigationController?.navigationBar) { (bar, theme) in
    bar.tintColor = theme.mainColor
    bar.barTintColor = theme.backgroundColor
}

4. Change another theme, language or configuration with your theme instance:

themeManager.apply(otherTheme)

License

ThemeManager is released under the MIT license. See LICENSE for details.

About

The most lightweight, powerful, convenient and easiest way to manage and change your app themes, languages(and so on) dynamically.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published