I want to Switch Time scrubber to do 15 min intervals

孤人 提交于 2019-12-02 10:34:42

For you case, it's better to use some portions scaling. try this code below. I believe it's pretty straightforward.

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var slider: UISlider!
    @IBOutlet weak var label: UILabel!

    let ticksCount: Float = 13*4 // 15mins intervals count from 8am till 9pm
    let calendar = NSCalendar.currentCalendar()
    let todayDate = NSDate()

    override func viewDidLoad() {
        super.viewDidLoad()

        slider.minimumValue = 0
        slider.maximumValue = ticksCount
    }

    @IBAction func onValueChanged(slider: UISlider) {

        let minutesFromDayStart = 8 * 60 + Int(slider.value) * 15 // total minutes from day start, assuming we use intervals from 8am
        let timeSlotDate = dateWithTimeSlotForDate(todayDate, minutesFromDayStart: minutesFromDayStart)
        showDate(timeSlotDate)
    }

    private func showDate(date: NSDate) {
        let df = NSDateFormatter()
        df.dateStyle = .MediumStyle
        df.timeStyle = .MediumStyle

        label.text = df.stringFromDate(date)
    }

    private func dateWithTimeSlotForDate(date: NSDate, minutesFromDayStart: Int) -> NSDate {

        let dayStart = dayStartDateForDate(date)
        return calendar.dateByAddingUnit(.Minute, value: minutesFromDayStart, toDate: dayStart, options: NSCalendarOptions(rawValue: 0))!
    }

    private func dayStartDateForDate(date: NSDate) -> NSDate {
        return calendar.startOfDayForDate(date)
    }
}

It should be something like

  yourSlider.continuous = false


 @IBAction func sliderMoved(sender: UISlider) {

   let slot = Double(sender.value)
   let slotDate = self.timeFromSlot(slot)

   print(timeFormatter.stringFromDate(slotDate!))

   if (sender.value >= 28800 && sender.value < your next interval 1) {
       sender.value  = 28800
   } else if (sender.value >= your next interval 1 && sender.value < your next interval 2) {
       sender.value = your next interval 1
   } else if ....

}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!