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
- Open your Storyboard.
- Drag and drop a
UISlider
from the Object Library onto your ViewController. - Set properties like minimum value, maximum value, and default value in the Attributes Inspector.
- 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
Feature | Code Example |
---|---|
Set min/max values | slider.minimumValue = 0; slider.maximumValue = 100 |
Change track color | slider.minimumTrackTintColor = .blue |
Change thumb color | slider.thumbTintColor = .red |
Set thumb image | slider.setThumbImage(UIImage(named: "thumb"), for: .normal) |
Handle value change | slider.addTarget(self, action: #selector(sliderValueChanged(_:)), for: .valueChanged) |
Use haptic feedback | feedbackGenerator.selectionChanged() |
Would you like a specific example or a custom design for your UISlider? 🚀