我知道可以通过属性检查器来设置值。然而,滑块的范围需要根据从服务器获取的数据进行更改。在这种情况下,硬编码的值不是一个选项。有没有办法以编程方式设置它?
Apple的WKInterfaceSlider文档指出,不可能通过编程方式更改WKInterfaceSlider
的最小和最大值——这些只能在界面生成器中设置。
然而,从功能上讲,这并不重要,因为WKInterfaceSlider
是一种带有颜色的可视化条形控件,当用户滚动数字表冠时,它将被填充颜色。以编程方式,您可以读取滑块的值,该值报告为介于最小值和最大值之间的数字,基于填充滑块的比例。但是,滑块本身不向最终用户显示值。
因此,您可以通过存储这些值并计算偏移和乘数属性来应用于从滑块返回的值,从而实现与更改滑块的最小和最大值完全类似的效果。
在Interface Builder中创建一个滑块,最小值为0,最大值为100。(实际上这些值可以是任何值,但这是最简单的解决方案,因为这些值可以直接读取为百分比。)
在WatchKit应用程序扩展中创建minimumValue和maximumValue属性。
计算乘数值,计算公式为(maximumValue - minimumValue)/100
。
当您从WKInterfaceSlider
读取值时,只需将其计算为(WKInterfaceSliderValue * multiplier) + minimumValue
。
随时可以更改minimumValue和maximumValue属性,您将获得来自4的新期望范围内的值。
请注意,还有一种方法可以通过编程方式更改在最小值和最大值之间设置的步数,使用方法setNumberOfSteps(_:)
。这不会影响上述计算,但当然会影响滑块在该范围内返回给您的可能值。
[slider setValue:@(10) forKey:@"maximum"]
或@"maximumValue"
这样的东西,但即使这样做起作用了,你的应用程序可能会因为使用私有API而被苹果拒绝。 - Glorfindel