繁体   English   中英

如何在 Swift 中按下按钮时显示滑块?

[英]how to make a slider appear when a button is pressed in Swift?

我正在制作一个绘图应用程序,我希望在用户点击按钮时出现一个滑块,例如设置线条的宽度。 我可以添加一个警报并在其中放置一个滑块吗?

使用 Swift 3.0,您可以向 UIAlertController 子视图添加滑块(或其他对象)。 以下示例由 @IBAction 按钮触发以使用和更新 UserDefaults: UIAlertController 中的 UISider 示例

@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)
}

子视图几乎可以放置在任何地方。 为了给滑块腾出空间,我在消息中添加了一些额外的换行符以腾出一些空间。 滑块将随警报消息一起出现和消失。

欢迎使用堆栈溢出。

你的问题更像是一个基本的编程问题,而不是一个 Swift 问题。

我认为您不能在警报中放置滑块。 Apple 最近引入了 UIAlertController 类,他们的文档说你应该使用它而不是 UIAlertView 来进行新的开发。

UIAlertController 允许您创建警报和操作表,并添加操作。 操作显示为按钮。 还有一个用于添加文本字段的工具。 但是,我认为没有任何工具可以添加其他视图对象(如滑块)。

现已弃用的 UIAlertView 也未设置用于添加滑块等自定义字段。

您可以将滑块放在视图上的某个位置并将其隐藏属性设置为 true,然后在按钮操作方法中设置 mySlider.hidden = false。

但是,听起来您希望滑块出现在 UI 顶部,然后在用户完成后消失。

您可以创建一个带有滑块和关闭按钮的视图,将其放在视图控制器的内容视图之上,并将其隐藏标志设置为 true。 当用户点击您的按钮时,设置 hidden = false 并且视图将出现在顶部,就像警报一样。 您将设置约束,以便包含滑块的视图将在屏幕上居中并适当调整大小。

切换隐藏属性。

slider.hidden = true//hide it

slider.hidden = false//show it

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM