MultiSlider 2.1.9

MultiSlider 2.1.9

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2024年7月
SPM支持 SPM

Yonat Sharon 维护。




MultiSlider

带有多个滑块、值、范围突出显示、可选快速值、可选值标签,可以是垂直或水平方向的 UISlider 克隆。

Swift Version Build Status License CocoaPods Compatible Platform PRs Welcome

特性

  • 多个滑块
  • 范围滑块(可选) - 滑块之间的颜色与滑块外的颜色不同
  • 垂直(可选)
  • 值标签(可选)
  • 快照步骤或特定快照值(可选)
  • 触觉反馈(可选)
  • 可配置滑块图片、最小和最大图片。
  • 可配置轨道宽度、颜色、圆角。

使用说明

let slider = MultiSlider()
slider.minimumValue = 1    // default is 0.0
slider.maximumValue = 5    // default is 1.0

slider.value = [1, 4.5, 5]

slider.addTarget(self, action: #selector(sliderChanged(_:)), for: .valueChanged) // continuous changes
slider.addTarget(self, action: #selector(sliderDragEnded(_:)), for: . touchUpInside) // sent when drag ends

SwiftUI 使用说明

MultiValueSlider(value: $valueArray, minimumValue: 1, maximumValue: 5)

以下提到的属性可以用作修饰符,或将它们传递给 MultiValueSlider 初始化器的参数。例如

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

获取多个手柄值

使用 value 获取所有手柄的值,并用 draggedThumbIndex 找到哪个手柄最后被移动。

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

范围滑块

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

垂直/水平方向

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

值标签

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

为了更好地控制标签文本

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

对齐步骤

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

更改外观

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

图片

// 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")

缩略图间的距离/重叠

// 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

禁用/冻结缩略图

slider.disabledThumbIndices = [1, 3]

需求

  • iPhone OS 9.0+
  • Xcode 10

安装

CocoaPods

pod 'MultiSlider'

旧版本

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

Swift包管理器

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

Meta

@yonatsharon

https://github.com/yonat/MultiSlider