Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

UISlider clone with multiple thumbs and values, range highlight, optional snap intervals, optional value labels, either vertical or horizontal.

License

NotificationsYou must be signed in to change notification settings

yonat/MultiSlider

Repository files navigation

UISlider clone with multiple thumbs and values, range highlight, optional snap values, optional value labels, either vertical or horizontal.

Swift VersionBuild StatusLicenseCocoaPods CompatiblePlatformPRs Welcome

Features

  • Multiple thumbs
  • Range slider (optional) - track color between thumbs different from track color outside thumbs
  • Vertical (optional)
  • Value labels (optional)
  • Snap steps or specific snap values (optional)
  • Haptic feedback (optional)
  • Configurable thumb image, minimum and maximum images.
  • Configurable track width, color, rounding.

Usage

letslider=MultiSlider()slider.minimumValue=1    // default is 0.0slider.maximumValue=5    // default is 1.0slider.value=[1,4.5,5]slider.addTarget(self, action: #selector(sliderChanged(_:)), for:.valueChanged) // continuous changesslider.addTarget(self, action: #selector(sliderDragEnded(_:)), for:. touchUpInside) // sent when drag ends

SwiftUI Usage

@StatevarvalueArray:[CGFloat]=[7,13]// ...MultiValueSlider(value: $valueArray, minimumValue:1, maximumValue:5)

The properties mentioned below can be used as modifiers, or passed as arguments to theMultiValueSlider initializer. For example:

MultiValueSlider(value: $valueArray, outerTrackColor:.lightGray).thumbTintColor(.blue)

Getting multiple thumb values

Usevalue to get all thumbs values, anddraggedThumbIndex to find which thumb was last moved.

func sliderChanged(slider:MultiSlider){print("thumb\(slider.draggedThumbIndex) moved")print("now thumbs are at\(slider.value)") // e.g., [1.0, 4.5, 5.0]}

Range slider

slider.outerTrackColor=.lightGray // outside of first and last thumbs

Vertical / horizontal orientation

slider.orientation=.horizontal // default is .verticalslider.isVertical=false // same effect, but accessible from Interface Builder

Value labels

slider.valueLabelPosition=.left // .notAnAttribute = don't show labelsslider.valueLabelAlternatePosition=true // alternate left and right positions (false by default)slider.isValueLabelRelative=true // show differences between thumbs instead of absolute valuesslider.valueLabelFormatter.positiveSuffix=" 𝞵s"slider.valueLabelColor=.greenslider.valueLabelFont= someFont

For more control over the label text:

slider.valueLabelTextForThumb={ thumbIndex, thumbValuein["Parasol","Umbrella"][thumbIndex]+"\(thumbValue)"}

Snap steps

slider.snapStepSize=0.5 // default is 0.0, i.e. don't snapslider.snapValues=[1,2,4,8] // specify specific snap values instead uniform stepsslider.isHapticSnap=false // default is true, i.e. generate haptic feedback when sliding over snap valuesslider.snapImage=UIImage(systemName:"circle.fill") // default: no image

Changing Appearance

slider.tintColor=.cyan // color of trackslider.thumbTintColor=.blue // color of thumbsslider.trackWidth=32slider.hasRoundTrackEnds=trueslider.showsThumbImageShadow=false // wide tracks look better without thumb shadowslider.centerThumbOnTrackEnd=true // when thumb value is minimum or maximum, align it's center with the track end instead of its edge

Images

// add images at the ends of the slider:slider.minimumImage=UIImage(named:"clown")slider.maximumImage=UIImage(named:"cloud")// change image for all thumbs:slider.thumbImage=UIImage(named:"balloon")// or let each thumb have a different image:slider.thumbViews[0].image=UIImage(named:"ball")slider.thumbViews[1].image=UIImage(named:"club")// expand drag area when using a small thumb image:slider.thumbTouchExpansionRadius=16

Distance/Overlap Between Thumbs

// allow thumbs to overlap:slider.keepsDistanceBetweenThumbs=false// make thumbs keep a greater distance from each other (default = half the thumb size):slider.distanceBetweenThumbs=3.14

Disabling/freezing thumbs

slider.disabledThumbIndices=[1,3]

Requirements

  • iOS 9.0+
  • Xcode 10

Installation

CocoaPods:

pod'MultiSlider'

Legacy versions:

Swift versionMultiSlider version
4.0 (Xcode 9.4)pod 'MiniLayout', '~> 1.2.1'
pod 'MultiSlider', '~> 1.6.0'
3pod 'MiniLayout', '~> 1.1.0'
pod 'MultiSlider', '~> 1.1.2'
2.3pod 'MiniLayout', '~> 1.0.1'
pod 'MultiSlider', '~> 1.0.1'

Swift Package Manager:

dependencies:[.package(url:"https://github.com/yonat/MultiSlider", from:"2.2.1")]

Meta

@yonatsharon

https://github.com/yonat/MultiSlider

About

UISlider clone with multiple thumbs and values, range highlight, optional snap intervals, optional value labels, either vertical or horizontal.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Contributors9


[8]ページ先頭

©2009-2025 Movatter.jp