ios - 在自定义选择器中自定义数字,使其成为 5 的乘数
问题描述
我使用了这里的代码,我想让自定义滑块只表示一个数字,该数字是 5 到 180 范围内的 5 的乘数。我在 XCode 12.5 中使用 SwiftUI,这里是代码。PS。这不是整个代码,但我希望代码接近此代码。
CustomSlider(value: $someValue, range: 5...180)
解决方案
方法一
第一种方法是someValue
每次更改时将 的值四舍五入到最接近的 5。滑块只能以固定增量上升,因此看起来确实有点跳跃。
代码:
struct ContentView: View {
@State private var someValue: CGFloat = 5
var body: some View {
VStack {
CustomSlider(value: $someValue, range: 5 ... 180)
Text("Value: \(someValue)")
}
.onChange(of: someValue) { newValue in
someValue = round(newValue / 5) * 5
}
}
}
方法二
这种方法滑块是连续的,但是您读取的值sliderValue
会四舍五入到最接近的 5。我更喜欢这种方法,因为它感觉更平滑。
代码:
struct ContentView: View {
@State private var someValue: CGFloat = 5
private var sliderValue: CGFloat {
round(someValue / 5) * 5
}
var body: some View {
VStack {
CustomSlider(value: $someValue, range: 5 ... 180)
Text("Value: \(sliderValue)")
}
}
}
推荐阅读
- javascript - 如何以开玩笑的方式测试滚动事件处理程序
- unix - 运行tail命令的更有效选项
- swift - Swift Dictionary:如何合并字典中的值包含相似的键
- java - 如何从核心转储文件中提取 JVM 堆转储?
- reactjs - 如何通过可访问性 API 为 React 中的自定义控件公开焦点状态?HTMLElement.focus() 就足够了吗?
- c# - LINQ 除了不检索重复项
- javascript - 复选框和本地存储
- linux - bash中的静默while循环
- node.js - 在 TypeORM 中设置生成列的基值/起始值
- oracle - SQL Oracle 中的通配符