iOS

⌘K
  1. Home
  2. Docs
  3. iOS
  4. UI Controls
  5. Sliders (UISlider)

Sliders (UISlider)

UISlider is a UI component in iOS that allows users to select a value from a continuous or discrete range by dragging a thumb along a track. It is commonly used for volume control, brightness adjustment, progress tracking, and other adjustable settings in iOS apps.


1. How to Add UISlider in Swift

A. Adding UISlider Programmatically

import UIKit

class ViewController: UIViewController {

    let slider = UISlider()

    override func viewDidLoad() {
        super.viewDidLoad()

        // Set slider frame
        slider.frame = CGRect(x: 50, y: 200, width: 300, height: 20)
        
        // Set min and max values
        slider.minimumValue = 0
        slider.maximumValue = 100
        
        // Set default value
        slider.value = 50
        
        // Change slider color
        slider.minimumTrackTintColor = .blue
        slider.maximumTrackTintColor = .gray
        slider.thumbTintColor = .red

        // Add target action
        slider.addTarget(self, action: #selector(sliderValueChanged(_:)), for: .valueChanged)

        // Add slider to view
        view.addSubview(slider)
    }

    @objc func sliderValueChanged(_ sender: UISlider) {
        print("Slider Value: \(sender.value)")
    }
}

B. Adding UISlider via Storyboard

  1. Open your Storyboard.
  2. Drag and drop a UISlider from the Object Library onto your ViewController.
  3. Set properties like minimum value, maximum value, and default value in the Attributes Inspector.
  4. Create an IBOutlet and IBAction in your ViewController.swift file: @IBOutlet weak var slider: UISlider! @IBAction func sliderValueChanged(_ sender: UISlider) { print("Current Value: \(sender.value)") }

2. Customizing UISlider

A. Changing Track Colors

slider.minimumTrackTintColor = .green
slider.maximumTrackTintColor = .lightGray

B. Customizing the Thumb Image

slider.setThumbImage(UIImage(named: "custom_thumb"), for: .normal)

C. Setting a Step Interval (Discrete Values)

@objc func sliderValueChanged(_ sender: UISlider) {
    let step: Float = 10
    let roundedValue = round(sender.value / step) * step
    sender.value = roundedValue
    print("Rounded Value: \(roundedValue)")
}

3. Advanced Features

A. Adding Haptic Feedback (iOS 10+)

import UIKit

class ViewController: UIViewController {
    let feedbackGenerator = UISelectionFeedbackGenerator()

    override func viewDidLoad() {
        super.viewDidLoad()
        feedbackGenerator.prepare()
    }

    @objc func sliderValueChanged(_ sender: UISlider) {
        feedbackGenerator.selectionChanged()
    }
}

B. Using UISlider with AVAudioPlayer (Volume Control Example)

import AVFoundation

class ViewController: UIViewController {
    var audioPlayer: AVAudioPlayer?

    override func viewDidLoad() {
        super.viewDidLoad()
        let slider = UISlider(frame: CGRect(x: 50, y: 200, width: 300, height: 20))
        slider.minimumValue = 0
        slider.maximumValue = 1
        slider.value = 0.5
        slider.addTarget(self, action: #selector(changeVolume(_:)), for: .valueChanged)
        view.addSubview(slider)

        // Load audio file
        if let url = Bundle.main.url(forResource: "music", withExtension: "mp3") {
            audioPlayer = try? AVAudioPlayer(contentsOf: url)
            audioPlayer?.play()
        }
    }

    @objc func changeVolume(_ sender: UISlider) {
        audioPlayer?.volume = sender.value
    }
}

4. Summary of UISlider Features

FeatureCode Example
Set min/max valuesslider.minimumValue = 0; slider.maximumValue = 100
Change track colorslider.minimumTrackTintColor = .blue
Change thumb colorslider.thumbTintColor = .red
Set thumb imageslider.setThumbImage(UIImage(named: "thumb"), for: .normal)
Handle value changeslider.addTarget(self, action: #selector(sliderValueChanged(_:)), for: .valueChanged)
Use haptic feedbackfeedbackGenerator.selectionChanged()

Would you like a specific example or a custom design for your UISlider? 🚀