我知道可以通过属性检查器设置值。但是,滑块的范围需要根据来自服务器的数据进行更改。在这种情况下,不能硬编码这些值。有没有办法用程序设置它?
Apple的WKInterfaceSlider文档指出,无法通过编程方式更改WKInterfaceSlider
的最小值和最大值,这些值只能在Interface Builder中设置。
然而,这在功能上并不重要,因为WKInterfaceSlider
是一个视觉颜色条,当用户滚动数字表冠时,它会充满颜色。通过编程方式,您将读取滑块的值,该值根据填充的滑块的比例报告为介于最小值和最大值之间的数字。但是,滑块本身并不向最终用户显示一个值。
因此,您可以实现与更改滑块的最小值和最大值完全类似的东西,只需将这些值存储在属性中并计算您应用于滑块返回值的偏移量和乘数属性。
-
在Interface Builder中创建滑块,最小值为0,最大值为100。(这些值实际上可以是任何值,但这是最简单的解决方案,因为这些值可以直接读取为百分比。)
-
在WatchKit应用扩展中创建minimumValue和maximumValue属性
-
按
(maximumValue - minimumValue)/100
计算乘数 -
当您从
WKInterfaceSlider
读取值时,只需将其计算为(WKInterfaceSliderValue * multiplier) + minimumValue
。
在任何时候,你可以改变minimumValue和maximumValue属性,你会得到你想要的新范围的值。
注意,还有一种方法可以改变在最小值和最大值之间通过编程设置的步数,使用方法setNumberOfSteps(_:)
。这不会影响上面的计算,但当然会影响滑块在该范围内返回给您的可能值。