Swiftpack.co - Package - swift-extensions/swiftui-sliders

ci

Custom SwiftUI sliders and tracks.

This package allows you to build highly customizable sliders and tracks for iOS, macOS and Mac Catalyst.

Features

  • Build your own sliders and tracks using composition
  • Highly customizable
  • Horizontal and Vertical styles
  • Range and XY values
  • Different sizes for lower and upper range thumbs

Styles

  • HorizontalValueSliderStyle
  • VerticalValueSliderStyle
  • HorizontalRangeSliderStyle
  • VerticalRangeSliderStyle
  • RectangularPointSliderStyle

How to use

Add this swift package to your project

git@github.com:spacenation/swiftui-sliders.git

Import and use

import Sliders
import SwiftUI

struct ContentView: View {
    @State var value = 0.5
    @State var range = 0.2...0.8
    @State var x = 0.5
    @State var y = 0.5
    
    var body: some View {
        Group {
            ValueSlider(value: $value)
            RangeSlider(range: $range)
            PointSlider(x: $x, y: $y)
        }
    }
}

For more examples open /Examples/SlidersExamples.xcodeproj

Customization with style

Use any SwiftUI view modifiers to create custom tracks and thumbs.

RangeSlider(range: $model.range2)
    .rangeSliderStyle(
        HorizontalRangeSliderStyle(
            track:
                HorizontalRangeTrack(
                    view: Capsule().foregroundColor(.purple)
                )
                .background(Capsule().foregroundColor(Color.purple.opacity(0.25)))
                .frame(height: 8),
            lowerThumb: Circle().foregroundColor(.purple),
            upperThumb: Circle().foregroundColor(.purple),
            lowerThumbSize: CGSize(width: 32, height: 32),
            upperThumbSize: CGSize(width: 32, height: 32),
            options: .forceAdjacentValue
        )
    )

SDKs

  • iOS 13+
  • Mac Catalyst 13.0+
  • macOS 10.15+
  • Xcode 11.0+

Roadmap

  • Circular sliders and tracks

Code Contributions

Feel free to contribute via fork/pull request to master branch. If you want to request a feature or report a bug please start a new issue.

Coffee Contributions

If you find this project useful please consider becoming my GitHub sponsor.

Github

link
Stars: 140

Dependencies

Used By

Total: 0

Releases

- 2020-09-13 23:32:05

- 2020-09-09 17:56:24

Release 1.0.0 - 2020-05-19 05:54:26

Integer types - 2020-04-27 01:40:23

It's now possible to use integers as values without type casting in binding. Works for value, range and point sliders.

@State var integer: UInt8 = 128

ValueSlider(value: $integer)

Inlinable styles - 2020-03-26 18:46:46

Styles - 2020-03-13 08:55:04

Sliders renamed to:

ValueSlider()
RangeSlider()
PointSlider()

Style customizations in:

.valueSliderStyle(...)
.rangeSliderStyle(...)
.pointSliderStyle(...)

Track accent color fix - 2020-03-12 07:21:47

Accent color fix - 2020-03-12 06:58:51

- 2020-01-26 22:26:25