Skip to content

Slider

The Slider component allows users to select a value from a continuous range.

import { SwiftUI } from '@mgcrea/react-native-swiftui';
const [volume, setVolume] = useState(50);
<SwiftUI.Slider
label="Volume"
value={volume}
minimum={0}
maximum={100}
onChange={setVolume}
/>
PropTypeDefaultDescription
valuenumber-Current slider value
minimumnumber0Minimum value
maximumnumber1Maximum value
stepnumber-Step increment
labelstring-Label text
disabledbooleanfalseDisable slider
onChange(value: number) => void-Called when value changes
onFocus() => void-Called when slider is focused
onBlur() => void-Called when slider loses focus
childrenReactNode-Custom content
const [volume, setVolume] = useState(50);
<SwiftUI.Section header="Audio">
<SwiftUI.Slider
label={`Volume: ${volume}%`}
value={volume}
minimum={0}
maximum={100}
onChange={setVolume}
/>
</SwiftUI.Section>
const [rating, setRating] = useState(3);
<SwiftUI.Slider
label={`Rating: ${rating} stars`}
value={rating}
minimum={1}
maximum={5}
step={1}
onChange={setRating}
/>
const [brightness, setBrightness] = useState(0.8);
<SwiftUI.HStack>
<SwiftUI.Image name="system:sun.min" />
<SwiftUI.Slider
value={brightness}
minimum={0}
maximum={1}
onChange={setBrightness}
/>
<SwiftUI.Image name="system:sun.max" />
</SwiftUI.HStack>
const [red, setRed] = useState(128);
const [green, setGreen] = useState(128);
const [blue, setBlue] = useState(128);
<SwiftUI.Form>
<SwiftUI.Section header="Color Mixer">
<SwiftUI.Slider
label={`Red: ${red}`}
value={red}
minimum={0}
maximum={255}
step={1}
onChange={setRed}
/>
<SwiftUI.Slider
label={`Green: ${green}`}
value={green}
minimum={0}
maximum={255}
step={1}
onChange={setGreen}
/>
<SwiftUI.Slider
label={`Blue: ${blue}`}
value={blue}
minimum={0}
maximum={255}
step={1}
onChange={setBlue}
/>
<SwiftUI.Rectangle
style={{
backgroundColor: `rgb(${red}, ${green}, ${blue})`,
height: 50,
borderRadius: 8,
}}
/>
</SwiftUI.Section>
</SwiftUI.Form>
<SwiftUI.Slider
label="Locked Value"
value={50}
minimum={0}
maximum={100}
disabled
onChange={() => {}}
/>