如何在 Swift 中按下按钮时显示滑块?
how to make a slider appear when a button is pressed in Swift?
我正在制作一个绘图应用程序,我希望当用户点击按钮时出现一个滑块,例如设置线条的宽度。
我可以只添加一个警报并在其中放一个滑块吗?
切换隐藏 属性。
slider.hidden = true//hide it
slider.hidden = false//show it
欢迎来到 Stack Overflow。
你的问题更像是一个基本的编程问题,而不是 Swift 问题。
我认为您不能在警报中放置滑块。 Apple 最近推出了 UIAlertController class,他们的文档说您应该使用它而不是 UIAlertView 进行新开发。
A UIAlertController 允许您创建警报和操作表,并添加操作。操作显示为按钮。还有一个用于添加文本字段的工具。但是,我认为没有任何工具可以添加滑块等其他视图对象。
现已弃用的 UIAlertView 也未设置为添加滑块等自定义字段。
您可以将滑块放在视图中的某处并将其隐藏 属性 设置为 true,然后在按钮操作方法中,设置 mySlider.hidden = false。
然而,听起来您希望滑块显示在 UI 之上,然后在用户使用完后消失。
您可以创建一个带有滑块和关闭按钮的视图,将其放在视图控制器的内容视图之上,并将其隐藏标志设置为 true。当用户点击您的按钮时,设置 hidden = false 并且视图将出现在顶部,就像警报一样。您将设置约束,以便包含滑块的视图在屏幕上居中并适当调整大小。
使用 Swift 3.0,您可以将滑块(或其他对象)添加到 UIAlertController 子视图。以下示例由 @IBAction 按钮触发以使用和更新 UserDefaults:Example of a UISider inside a UIAlertController
@IBAction func sliderButton(_ sender: AnyObject) {
//get the Slider values from UserDefaults
let defaultSliderValue = UserDefaults.standard.float(forKey: "sliderValue")
//create the Alert message with extra return spaces
let sliderAlert = UIAlertController(title: "Update Defaults", message: "Increase/Decrease the slider…\n\n\n\n\n\n", preferredStyle: .alert)
//create a Slider and fit within the extra message spaces
//add the Slider to a Subview of the sliderAlert
let slider = UISlider(frame:CGRect(x: 10, y: 100, width: 250, height: 80))
slider.minimumValue = 1
slider.maximumValue = 100
slider.value = defaultSliderValue
slider.isContinuous = true
slider.tintColor = UIColor.red
sliderAlert.view.addSubview(slider)
//OK button action
let sliderAction = UIAlertAction(title: "OK", style: .default, handler: { (result : UIAlertAction) -> Void in
UserDefaults.standard.set(slider.value, forKey: "sliderValue")
})
//Cancel button action
let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: nil)
//Add buttons to sliderAlert
sliderAlert.addAction(sliderAction)
sliderAlert.addAction(cancelAction)
//present the sliderAlert message
self.present(sliderAlert, animated: true, completion: nil)
}
子视图几乎可以放置在任何地方。为了给滑块腾出空间,我在消息中添加了一些额外的换行符以打开一些 space。滑块将随着警报消息出现和消失。
我正在制作一个绘图应用程序,我希望当用户点击按钮时出现一个滑块,例如设置线条的宽度。 我可以只添加一个警报并在其中放一个滑块吗?
切换隐藏 属性。
slider.hidden = true//hide it
slider.hidden = false//show it
欢迎来到 Stack Overflow。
你的问题更像是一个基本的编程问题,而不是 Swift 问题。
我认为您不能在警报中放置滑块。 Apple 最近推出了 UIAlertController class,他们的文档说您应该使用它而不是 UIAlertView 进行新开发。
A UIAlertController 允许您创建警报和操作表,并添加操作。操作显示为按钮。还有一个用于添加文本字段的工具。但是,我认为没有任何工具可以添加滑块等其他视图对象。
现已弃用的 UIAlertView 也未设置为添加滑块等自定义字段。
您可以将滑块放在视图中的某处并将其隐藏 属性 设置为 true,然后在按钮操作方法中,设置 mySlider.hidden = false。
然而,听起来您希望滑块显示在 UI 之上,然后在用户使用完后消失。
您可以创建一个带有滑块和关闭按钮的视图,将其放在视图控制器的内容视图之上,并将其隐藏标志设置为 true。当用户点击您的按钮时,设置 hidden = false 并且视图将出现在顶部,就像警报一样。您将设置约束,以便包含滑块的视图在屏幕上居中并适当调整大小。
使用 Swift 3.0,您可以将滑块(或其他对象)添加到 UIAlertController 子视图。以下示例由 @IBAction 按钮触发以使用和更新 UserDefaults:Example of a UISider inside a UIAlertController
@IBAction func sliderButton(_ sender: AnyObject) {
//get the Slider values from UserDefaults
let defaultSliderValue = UserDefaults.standard.float(forKey: "sliderValue")
//create the Alert message with extra return spaces
let sliderAlert = UIAlertController(title: "Update Defaults", message: "Increase/Decrease the slider…\n\n\n\n\n\n", preferredStyle: .alert)
//create a Slider and fit within the extra message spaces
//add the Slider to a Subview of the sliderAlert
let slider = UISlider(frame:CGRect(x: 10, y: 100, width: 250, height: 80))
slider.minimumValue = 1
slider.maximumValue = 100
slider.value = defaultSliderValue
slider.isContinuous = true
slider.tintColor = UIColor.red
sliderAlert.view.addSubview(slider)
//OK button action
let sliderAction = UIAlertAction(title: "OK", style: .default, handler: { (result : UIAlertAction) -> Void in
UserDefaults.standard.set(slider.value, forKey: "sliderValue")
})
//Cancel button action
let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: nil)
//Add buttons to sliderAlert
sliderAlert.addAction(sliderAction)
sliderAlert.addAction(cancelAction)
//present the sliderAlert message
self.present(sliderAlert, animated: true, completion: nil)
}
子视图几乎可以放置在任何地方。为了给滑块腾出空间,我在消息中添加了一些额外的换行符以打开一些 space。滑块将随着警报消息出现和消失。