SwiftUI 如何给 Slider 一个最小值和最大值并在文本中显示它的值?
SwiftUI how do I give a Slider a minimum and maximum value and display its value in a Text?
import SwiftUI
struct ContentView : View {
var body: some View {
PasswordGeneratorSettings(settingsConfiguration: PasswordGeneratorSettings.Settings.init(passwordLength: 20))
}
}
struct PasswordGeneratorSettings : View {
@State var settingsConfiguration: Settings
struct Settings {
var passwordLength = UInt()
}
var body: some View {
NavigationView {
List {
Slider(value: $settingsConfiguration.passwordLength) { pressed in
Text("Password Length: \(settingsConfiguration.passwordLength)")
}
}.navigationBarTitle(Text("Settings"))
}
}
}
所以我正在制作一个密码生成器,我想从一个最小长度为 1,最大长度为 512 的滑块开始,并带有一个标签显示它的值(作为整数),但这就是我的全部只需要尝试在表格视图(列表)的左侧使用更新标签,在右侧使用滑块,但这甚至无法编译。
太久没读:
我正在尝试:
了解如何使用滑块设置最小值和最大值
在表格视图单元格的左侧有一个带有滑块值(整数)的标签,滑块在右侧。
而且我想在没有 UIKit 的情况下仅使用 SwiftUI 来完成所有这些操作(如果需要,还可以结合使用)。
这是您使用滑块的方式:
import SwiftUI
struct ContentView : View {
@State var length: Float = 20
var body: some View {
NavigationView {
List {
PasswordGeneratorSettings(length: $length)
}.navigationBarTitle(Text("Settings"))
}
}
}
struct PasswordGeneratorSettings : View {
@Binding var length: Float
var body: some View {
VStack(alignment: .leading) {
Slider(value: $length, in: 1...512, step: 1)
Text("Password Length: \(Int(length))")
}
}
}
您的代码无法编译,因为您需要在滑块值参数中使用双精度值。您可以使用以下代码实现您的要求。滑块采用三个参数值,from 和 through。用简单的语言来说,from 是 minValue,through 是 maxValue,并且在任何给定时间 "value" 将 return 滑块中的当前值。
struct PasswordGeneratorSettings : View {
@State var settingsConfiguration: Settings
struct Settings {
var passwordLength: Double = 1.0
}
var body: some View {
NavigationView {
List {
HStack {
Text("Password Length: \(Int(settingsConfiguration.passwordLength))")
Slider(value: $settingsConfiguration.passwordLength, from: 1, through: 512)
}
.padding()
}.navigationBarTitle(Text("Settings"))
}
}
}
import SwiftUI
struct ContentView : View {
var body: some View {
PasswordGeneratorSettings(settingsConfiguration: PasswordGeneratorSettings.Settings.init(passwordLength: 20))
}
}
struct PasswordGeneratorSettings : View {
@State var settingsConfiguration: Settings
struct Settings {
var passwordLength = UInt()
}
var body: some View {
NavigationView {
List {
Slider(value: $settingsConfiguration.passwordLength) { pressed in
Text("Password Length: \(settingsConfiguration.passwordLength)")
}
}.navigationBarTitle(Text("Settings"))
}
}
}
所以我正在制作一个密码生成器,我想从一个最小长度为 1,最大长度为 512 的滑块开始,并带有一个标签显示它的值(作为整数),但这就是我的全部只需要尝试在表格视图(列表)的左侧使用更新标签,在右侧使用滑块,但这甚至无法编译。
太久没读: 我正在尝试:
了解如何使用滑块设置最小值和最大值
在表格视图单元格的左侧有一个带有滑块值(整数)的标签,滑块在右侧。
而且我想在没有 UIKit 的情况下仅使用 SwiftUI 来完成所有这些操作(如果需要,还可以结合使用)。
这是您使用滑块的方式:
import SwiftUI
struct ContentView : View {
@State var length: Float = 20
var body: some View {
NavigationView {
List {
PasswordGeneratorSettings(length: $length)
}.navigationBarTitle(Text("Settings"))
}
}
}
struct PasswordGeneratorSettings : View {
@Binding var length: Float
var body: some View {
VStack(alignment: .leading) {
Slider(value: $length, in: 1...512, step: 1)
Text("Password Length: \(Int(length))")
}
}
}
您的代码无法编译,因为您需要在滑块值参数中使用双精度值。您可以使用以下代码实现您的要求。滑块采用三个参数值,from 和 through。用简单的语言来说,from 是 minValue,through 是 maxValue,并且在任何给定时间 "value" 将 return 滑块中的当前值。
struct PasswordGeneratorSettings : View {
@State var settingsConfiguration: Settings
struct Settings {
var passwordLength: Double = 1.0
}
var body: some View {
NavigationView {
List {
HStack {
Text("Password Length: \(Int(settingsConfiguration.passwordLength))")
Slider(value: $settingsConfiguration.passwordLength, from: 1, through: 512)
}
.padding()
}.navigationBarTitle(Text("Settings"))
}
}
}