gpt4 book ai didi

ios - 午夜之后的 UI slider 时间?

转载 作者:搜寻专家 更新时间:2023-11-01 07:29:26 25 4
gpt4 key购买 nike

所以这是一个独特的情况。我有一个双 slider ,我使用 swift 制作了一个时间范围选择器,就像 Kayak 那样。不幸的是,我的时间范围必须在 00:00 到第二天凌晨 04:00 之间。

enter image description here

对于我的 slider 控件,使用 86340 秒的比例很容易获得从 00:00 到 23:59 的时间。我只需将它插入这个小函数,然后在两端/旋钮上弹出正确的范围:

func getTimeStringFromSeconds(seconds: Double) -> String {
let dcFormatter = NSDateComponentsFormatter()
dcFormatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehavior.Pad
dcFormatter.allowedUnits = [NSCalendarUnit.Hour, NSCalendarUnit.Minute]
dcFormatter.unitsStyle = NSDateComponentsFormatterUnitsStyle.Positional
return dcFormatter.stringFromTimeInterval(seconds)!
}

如您在上面的屏幕截图中所见,我将 100740 秒作为刻度。我怎样才能让它超过 23:59,然后重置为 00:00 并进入第二天?如上所示,我可以让它转到 28:00,从技术上讲,它应该是凌晨 4 点,但我希望它重新开始并显示 04:00,而不是 28:00。对此有什么好的解决方案?

请注意,到目前为止,我唯一的解决方案是通过在秒数超过 86340 后将秒数重置为 0.00 来让标签显示 0:00。比例仍然是 100740,但有一些数学公式如下所示让标签在不影响旋钮值 (upperValue) 的情况下另行说明:

if upperKnobLayer.highlighted {
upperValue += valueDelta
upperValue = max(min(maximumValue, upperValue), lowerValue)
var upperDouble = Double(round(upperValue))
if upperDouble > 86340.00 {
let newValue = upperDouble - 86340
upperDouble = 0.00 + newValue
}
upperTime = getTimeStringFromSeconds(upperDouble)
}

最佳答案

发布选择器的实现会有所帮助,但通常您希望 slider 值类型为 NSTimeIntervals。然后您可以获得一个引用日期,即今天的午夜 00:00。您可以使用 NSDate(timeIntervalSince:referenceDate) 然后获取表示自该引用日期以来的任何日期的 NSDate,可以相应地格式化并显示到屏幕上。这种方式的额外好处是,如果您的 timeInterval 使其溢出到第二天,则日期的实际日期将是正确的

关于ios - 午夜之后的 UI slider 时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33617391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com