A slider lets users pick a value by moving a thumb along a track. It's easy and quick for choosing numbers or settings.
Slider in iOS Swift
let slider = UISlider() slider.minimumValue = 0 slider.maximumValue = 100 slider.value = 50 slider.addTarget(self, action: #selector(sliderChanged(_:)), for: .valueChanged)
Use minimumValue and maximumValue to set the slider range.
Use addTarget to run code when the slider moves.
let slider = UISlider() slider.minimumValue = 0 slider.maximumValue = 10 slider.value = 5
slider.isContinuous = false
slider.tintColor = UIColor.red
This app shows a slider in the center. When you move it, the label below updates with the slider's current value.
import UIKit class ViewController: UIViewController { let slider = UISlider() let label = UILabel() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white slider.minimumValue = 0 slider.maximumValue = 100 slider.value = 50 slider.translatesAutoresizingMaskIntoConstraints = false slider.addTarget(self, action: #selector(sliderChanged(_:)), for: .valueChanged) label.text = "Value: 50" label.translatesAutoresizingMaskIntoConstraints = false label.textAlignment = .center view.addSubview(slider) view.addSubview(label) NSLayoutConstraint.activate([ slider.centerXAnchor.constraint(equalTo: view.centerXAnchor), slider.centerYAnchor.constraint(equalTo: view.centerYAnchor), slider.widthAnchor.constraint(equalToConstant: 300), label.topAnchor.constraint(equalTo: slider.bottomAnchor, constant: 20), label.centerXAnchor.constraint(equalTo: view.centerXAnchor) ]) } @objc func sliderChanged(_ sender: UISlider) { let currentValue = Int(sender.value) label.text = "Value: \(currentValue)" } }
Use isContinuous to control if value changes update continuously or only when user stops dragging.
Always set translatesAutoresizingMaskIntoConstraints to false when using Auto Layout in code.
Slider values are Float, so convert to Int if you want whole numbers.
Sliders let users pick a value by sliding a thumb along a track.
Set minimum, maximum, and initial value to control the range.
Use target-action to respond when the slider value changes.
Practice
UISlider in an iOS app?Solution
Step 1: Understand UISlider functionality
A UISlider allows users to pick a value by moving a thumb control along a horizontal track.Step 2: Compare with other UI elements
Other options like lists, alerts, or navigation do not involve sliding to select a value.Final Answer:
To let users select a value by sliding a thumb along a track -> Option DQuick Check:
UISlider = sliding value selector [OK]
- Confusing UISlider with UITableView or UIAlertController
- Thinking UISlider navigates screens
- Assuming UISlider shows messages
Solution
Step 1: Recall UISlider initialization syntax
In Swift, UI elements like UISlider are created by calling their initializer with parentheses, e.g., UISlider().Step 2: Check other options
Options B, C, and D use incorrect syntax or non-existent methods for UISlider creation.Final Answer:
let slider = UISlider() -> Option AQuick Check:
Correct UISlider init = let slider = UISlider() [OK]
- Using wrong class name like Slider
- Trying to call .new() which is not Swift syntax
- Using undefined functions like createSlider()
let slider = UISlider()
slider.minimumValue = 0
slider.maximumValue = 10
slider.value = 5
slider.addTarget(self, action: #selector(valueChanged), for: .valueChanged)
@objc func valueChanged(_ sender: UISlider) {
print("Value: \(sender.value)")
}
// User moves slider thumb to 7.5Solution
Step 1: Understand slider initial and changed values
The slider starts at 5 but the user moves it to 7.5, so the value changes to 7.5.Step 2: Check the action method output
The valueChanged method prints the current slider value, which is 7.5 after the user moves it.Final Answer:
Value: 7.5 -> Option CQuick Check:
Slider value after move = 7.5 [OK]
- Assuming value stays at initial 5
- Printing maximumValue instead of current value
- Forgetting to connect action to valueChanged
let slider = UISlider()
slider.minimumValue = 0
slider.maximumValue = 100
slider.value = 50
slider.addTarget(self, action: #selector(sliderChanged), for: .valueChanged)
func sliderChanged() {
print("Slider moved")
}Solution
Step 1: Check method signature for target-action
The action method for UISlider must accept the sender parameter (usually UISlider) to match the selector signature.Step 2: Verify other parts
minimumValue and maximumValue are Float, so integers are allowed as they convert. UISlider can be created without frame in code. addTarget includes event type .valueChanged correctly.Final Answer:
The sliderChanged method must have a parameter for the sender -> Option BQuick Check:
Action method needs sender parameter [OK]
- Omitting sender parameter in action method
- Thinking min/max must be Int instead of Float
- Assuming UISlider requires frame on creation
- Missing event type in addTarget
Solution
Step 1: Check slider range and initial value
let slider = UISlider() slider.minimumValue = 1 slider.maximumValue = 5 slider.value = 3 slider.addTarget(self, action: #selector(valueChanged(_:)), for: .valueChanged) @objc func valueChanged(_ sender: UISlider) { print("Selected: \(sender.value)") } sets minimumValue to 1, maximumValue to 5, and initial value to 3, matching the requirements.Step 2: Verify target-action and method signature
let slider = UISlider() slider.minimumValue = 1 slider.maximumValue = 5 slider.value = 3 slider.addTarget(self, action: #selector(valueChanged(_:)), for: .valueChanged) @objc func valueChanged(_ sender: UISlider) { print("Selected: \(sender.value)") } uses .valueChanged event and an action method with sender parameter, correctly printing the slider's current value.Step 3: Identify errors in other options
let slider = UISlider() slider.minValue = 1 slider.maxValue = 5 slider.currentValue = 3 slider.addTarget(self, action: #selector(valueChanged), for: .touchUpInside) func valueChanged() { print("Selected: \(slider.value)") } uses incorrect property names and event type. let slider = UISlider(frame: CGRect(x: 0, y: 0, width: 100, height: 20)) slider.minimumValue = 0 slider.maximumValue = 10 slider.value = 3 slider.addTarget(self, action: #selector(valueChanged(_:)), for: .valueChanged) @objc func valueChanged(_ sender: UISlider) { print("Selected: \(sender.value)") } has wrong min/max values. let slider = UISlider() slider.minimumValue = 1 slider.maximumValue = 5 slider.value = 3 slider.addTarget(self, action: #selector(valueChanged), for: .valueChanged) @objc func valueChanged() { print("Selected: \(slider.value)") }'s action method lacks sender parameter.Final Answer:
Option A code snippet correctly implements the behavior -> Option AQuick Check:
Correct properties and action method = let slider = UISlider() slider.minimumValue = 1 slider.maximumValue = 5 slider.value = 3 slider.addTarget(self, action: #selector(valueChanged(_:)), for: .valueChanged) @objc func valueChanged(_ sender: UISlider) { print("Selected: \(sender.value)") } [OK]
- Using wrong property names like minValue or currentValue
- Missing sender parameter in action method
- Using wrong control events like .touchUpInside
- Setting incorrect min/max values
Ready to prove it?
Pass the test and this pattern moves unknown
