我通过SwiftUI创建了一个UISlider,但是沿着轨道有太多的“台阶标记”,这没有我希望达到的“外观和感觉”。除了把浅色变成黑色之外,有人知道去除它们的技巧吗?
似乎只要我在UISlider初始化期间传递任何步骤值,步骤/刻度标记就一直存在。
struct setLoggingView: View {
@State var restfullness: Int
@State var elapsedRestTime: Double
var totalRestTime: Double
var stepValue: Int
var body: some View {
GeometryReader { geometry in
ScrollView {
VStack {
Text("Rested \(Int(elapsedRestTime)) seconds")
Slider(value: $elapsedRestTime,
in: 0...totalRestTime,
step: Double.Stride(stepValue),
label: {
Text("Slider")
}, minimumValueLabel: {
Text("-\(stepValue)")
}, maximumValueLabel: {
Text("+\(stepValue)")
})
.tint(Color.white)
.padding(.bottom)
Divider()
Spacer()
Text("Restfullness")
.frame(minWidth: 0, maxWidth: .infinity)
restfullnessStepper(restfullnessIndex: restfullness)
Button(action: {
print("Update Button Pressed")
}) {
HStack {
Text("Update")
.fontWeight(.medium)
}
}
.cornerRadius(40)
}
.border(Color.yellow)
}
}
}
}
2条答案
按热度按时间atmip9wb1#
尝试研究并询问了一些导师,但如果你在SwiftUI中使用默认的UISlider,似乎没有办法删除步进器。唯一的方法是创建完全自定义的滑块,但我想我只会使用默认版本。
5cg8jx4n2#
在Apple改进SwiftUI之前,实现这一点的方法是使用
step
参数提供自定义绑定 * 而不是 *:在这个范例中,
dailyGoalMinutes
在检视上宣告如下:滑块允许用户以10分钟为增量在0到1,440分钟(1天)之间进行选择。虽然滑块本身在拖动时不会与这些增量对齐,但
dailyGoalMinutes
的值将在定义的范围内被适当地限制为10的倍数。(Note:AppKit的行为方式相同;当
NSSlider
没有任何可见的刻度线时,滑块不会捕捉到值。)