Swift 3:使用滑块显示时间

Posted

技术标签:

【中文标题】Swift 3:使用滑块显示时间【英文标题】:Swift 3: Using a slider to show time 【发布时间】:2017-01-10 15:58:18 【问题描述】:

我正在尝试编写一个类似于 ios 10 的新就寝时间功能的闹钟,但我对 Swift 还很陌生。我有 2 个 UISlider:一个用于何时睡觉,另一个用于唤醒。我的问题是:如何结合两个 UISlider?我怎样才能让它计算分钟和小时?滑块中是否可以有网格线和停止点?我的想法是增量为 0.12,每当值达到 0.60 时,我会将其计为 1 小时和“...”分钟。

编辑:添加图像和代码

import UIKit
class ViewController: UIViewController 
    @IBOutlet weak var sleepTime: UISlider!
    @IBOutlet weak var displaySleep: UITextField!
    var sliderValue1 = 12
    var sliderValue2 = 12
    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    
    @IBAction func slider1Changed(_ sender: UISlider!) 
        var currentValue1 = Int(sender.value)
        displaySleep.text = "\(sliderValue2 - currentValue1) hours of sleep"
    
    @IBAction func slider2Changed(_ sender: UISlider!) 
        var currentValue2 = Int(sender.value)
        displaySleep.text = "\(currentValue2 - sliderValue1) hours of sleep"
    
    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

【问题讨论】:

【参考方案1】:

回答你的第一个问题。

您可以使用Segmented Control 组合这两个滑块。当用户选择“睡眠”或“唤醒”时,它将在实施时相应地更改 Slider 值。

控件单击然后从分段控件拖动到View Controller 类以创建IBAction 连接。确保将类型更改为UISegmentedControl

  @IBAction func onControlChanged(_ sender: UISegmentedControl) 
    switch sender.selectedSegmentIndex 
    case 0: // Sleep selected
      // Update Slider 
      break

    case 1: // Wake Up selected
      // Update Slider
      break

    default: 
      break
    
  

【讨论】:

以上是关于Swift 3:使用滑块显示时间的主要内容,如果未能解决你的问题,请参考以下文章

Swift 中的滑块弹出框

Swift:使用时间戳渲染转录

如何借助 iOS Swift 中的滑块更改标签的值?

Swift 3 内容滑块

swift中的音频播放器没有获得音量和音高的价值

显示多个滑块值的 UILabel