An open API service indexing awesome lists of open source software.

https://github.com/fromkk/colorset

Change theme color of your apps without Reactive extension.
https://github.com/fromkk/colorset

ios ios-library ios-swift swift swift5

Last synced: about 1 year ago
JSON representation

Change theme color of your apps without Reactive extension.

Awesome Lists containing this project

README

          

# ColorSet

[![Build Status](https://app.bitrise.io/app/388601b81b3a10f8/status.svg?token=ugmzD4_59hVYM1q5VLNI6g&branch=master)](https://app.bitrise.io/app/388601b81b3a10f8)
[![Swift 5.0](https://img.shields.io/badge/swift-5.0-red.svg?style=flat)](https://developer.apple.com/swift)
[![License](https://img.shields.io/badge/license-MIT-lightgrey.svg)](https://opensource.org/licenses/MIT)

## Description

Change theme color of your apps.

![ColorSet](./Resources/colorset.gif)

## Installation

### Carthage

- Insert `github "fromkk/ColorSet"` to your Cartfile .
- Run `carthage update`
- Link your app with `ColorSet_iOS.framework` in Carthage/Build

## Usage

### Define your ColorSet

```swift
import ColorSet_iOS

protocol ColorSet {
static var backgroundColor: UIColor { get }
static var textColor: UIColor { get }
}

struct MyColorSet {
static let backgroundColor: ColorObservable = .init(DefaultColorSet.backgroundColor)
static let textColor: ColorObservable = .init(DefaultColorSet.textColor)

static func replace(_ colorSet: ColorSet.Type) {
backgroundColor.accept(colorSet.backgroundColor)
textColor.accept(colorSet.textColor)
}
}

struct DefaultColorSet: ColorSet {
static var backgroundColor: UIColor = #colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)
static var textColor: UIColor = #colorLiteral(red: 0.2549019754, green: 0.2745098174, blue: 0.3019607961, alpha: 1)
}

struct DarkColorSet: ColorSet {
static var backgroundColor: UIColor = #colorLiteral(red: 0.2549019754, green: 0.2745098174, blue: 0.3019607961, alpha: 1)
static var textColor: UIColor = #colorLiteral(red: 0.8039215803, green: 0.8039215803, blue: 0.8039215803, alpha: 1)
}
```

### Change color set

```swift
import UIKit
import ColorSet_iOS

class ViewController: UIViewController {

@IBOutlet weak var label: UILabel!
@IBOutlet weak var darkmodeSwitch: UISwitch!

let observationBag = ColorObservationBag()

override func viewDidLoad() {
super.viewDidLoad()

MyColorSet.backgroundColor.bind(to: view, keyPath: \.backgroundColor).append(to: observationBag)
MyColorSet.textColor.bind(to: label, keyPath: \.textColor).append(to: observationBag)
MyColorSet.textColor.subscribe { [weak self] color in
self?.label.layer.borderColor = color.cgColor
}.append(to: observationBag)
}

@IBAction func darkmodeSwitchDidChanged(_ sender: UISwitch) {
if sender.isOn {
MyColorSet.replace(DarkColorSet.self)
} else {
MyColorSet.replace(DefaultColorSet.self)
}
}
}
```