Swiftpack.co - Alpensegler/TweaKit as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by Alpensegler.
Alpensegler/TweaKit 1.0.2
Yet another library for adjusting parameters and feature flagging.
⭐️ 18
🕓 9 weeks ago
iOS
.package(url: "https://github.com/Alpensegler/TweaKit.git", from: "1.0.2")

TweaKit

TweaKit, a.k.a. "Tweak It", is a pure-swift library for adjusting parameters and feature flagging.

Features

  • Declaring tweaks with property wrapper and result builder.
  • Tweaking frequently used types on the fly.
  • Carefully designed UI/UX.
  • Searching tweaks fuzzily.
  • Importing and exporting tweaks with json.

Requirements

  • iOS 13 and later
  • Swift 5.4 and later

Installation

CocoaPods

pod 'TweaKit', '~> 1.0'

Carthage

github 'Alpensegler/TweaKit' ~> 1.0

Swift Package Manager

.package(url: "https://github.com/Alpensegler/TweaKit.git", .upToNextMajor(from: "1.0.0"))

Get Started

Declare Tweaks

import TweaKit

enum Tweaks {
    @Tweak<CGFloat>(name: "Line Width", defaultValue: 1, from: 0.5, to: 2, stride: 0.05)
    static var sketchLineWidth
    @Tweak(name: "Line Color", defaultValue: UIColor(red: 0.227, green: 0.529, blue: 0.992, alpha: 1))
    static var sketchLineColor
    @Tweak(name: "Order", defaultValue: SketchAction.allCases)
    static var sketchActionsOrder
    @Tweak(name: "Name", defaultValue: "My Sketch")
    static var sketchName
    
    @Tweak(name: "Navigation Title", defaultValue: "Demo", options: ["Demo", "Example", "Guide"])
    static var rootViewNavigationTitle
    @Tweak(name: "Shake To Show Tweaks", defaultValue: true)
    static var rootViewEnableShake
    
    static let context = TweakContext {
        TweakList("Sketch") {
            TweakSection("Line") {
                $sketchLineWidth
                $sketchLineColor
            }
            TweakSection("Info") {
                $sketchName
            }
            TweakSection("Actions") {
                $sketchActionsOrder
            }
        }
        TweakList("Root View") {
            TweakSection("UI") {
                $rootViewNavigationTitle
            }
            TweakSection("Interaction") {
                $rootViewEnableShake
            }
        }
    }
}

You can tweak the following types:

  • Bool
  • Numeric Types: Int[8|16|32|64], UInt[8|16|32|64], Float, Double and CGFloat
  • String
  • Array that Element conforming some protocols
  • UIColor

Aside from changing value in place, you can also select value from given options.

Initialize Tweak Context

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    _ = Tweaks.context
    return true
}

You can initialize tweak context at any time, but you should make sure the context is initialized before using tweaks in it.

Use Tweaks

myViewController.title = Tweaks.rootViewNavigationTitle
mySketchView.lineWidth = Tweaks.sketchLineWidth

Show the Tweak UI

Tweaks.context.show()

Screenshot1 Screenshot2 Screenshot3 Screenshot4

Screenshot5 Screenshot6 Screenshot7 Screenshot8

That's all. Now you already know enough about TweaKit.

Feel free to play with the demo app or check wiki and documentation for more usage information.

Credits

About The Logo

The logo of TweaKit is a cute stoat, a mustelid that can tweak fur color during summer and winter.

GitHub

link
Stars: 18
Last commit: 3 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

1.0.2 - The Younger Scrolls
9 weeks ago

Added

  • Highlight located tweak.
  • Auto generated documentation.

Fixed

  • Pan gesture conflict in floating panel.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics