Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SwiftUI滑块';s标签可见性_Swiftui_Slider - Fatal编程技术网

SwiftUI滑块';s标签可见性

SwiftUI滑块';s标签可见性,swiftui,slider,Swiftui,Slider,在什么情况下,SwiftUI滑块的标签可见? Sliderinits可以接受标签参数,但我不明白这个标签的用途是什么 struct ContentView: View { @State private var slVal: CGFloat = -20 var body: some View { Slider(value: $slVal, in: -40...40, minimumValueLabel: Text("-40"), maximum

在什么情况下,
SwiftUI
滑块的标签可见?
Slider
inits可以接受标签参数,但我不明白这个标签的用途是什么

 struct ContentView: View {
    @State private var slVal: CGFloat = -20
    var body: some View {
        Slider(value: $slVal, in: -40...40, minimumValueLabel: Text("-40"), maximumValueLabel: Text("40")) {
            Text("Invisible text") // This view is not visible 
        }
        .padding()
    }
 }
滑块
放入
表单
不会使标签出现。我知道,
DatePicker
的标签是否显示取决于
.labelsHidden()
修饰符以及
.DatePickerStyle()
修饰符应用的
DatePickerStyle

是否有类似于滑动条的东西?

这是SwiftUI中众所周知的错误

这里有可能的解决方法。使用Xcode 12.1/iOS 14.1编写(向后兼容SwiftUI 1.0)


对@Asperi中的解决方案进行了轻微修改:

func slider<V, C>(
    value: Binding<V>,
    in bounds: ClosedRange<V> = 0...1,
    label: () -> C,
    onEditingChanged: @escaping (Bool) -> Void = { _ in }
) -> some View where V : BinaryFloatingPoint,
                     V.Stride : BinaryFloatingPoint,
                     C: View {
    HStack {
        label()
        Slider(
            value: value,
            in: bounds,
            onEditingChanged: onEditingChanged,
            label: { EmptyView() }
        )
    }
}

看起来更像是一个未完成的东西,而不是一个粗体的bug。这可能很方便,但我希望他们在将来的某个时候会修复标签,并为滑块提供一些样式,就像为
按钮
选择器
文本字段
切换等所做的那样。也许一个方便的init(不是一个自由函数)在这里更合适?
func slider<V, C>(
    value: Binding<V>,
    in bounds: ClosedRange<V> = 0...1,
    label: () -> C,
    onEditingChanged: @escaping (Bool) -> Void = { _ in }
) -> some View where V : BinaryFloatingPoint,
                     V.Stride : BinaryFloatingPoint,
                     C: View {
    HStack {
        label()
        Slider(
            value: value,
            in: bounds,
            onEditingChanged: onEditingChanged,
            label: { EmptyView() }
        )
    }
}
slider(value: $aValue, in: -1...1, label: {
    Text("aValue")
})